在指定路径下的所有文件中查找给定的字符串

先简单说下File类

File类的对象主要用来获取文件本身的一些信息,如文件所在的目录、文件长度、文件读写权限等,不涉及对文件的读写操作

创建java.io.File的实例对象,可以通过java.io.File的构造方法public File(String pathname)来实现,其中pathname指定文件名或路径名

Java.io.File的成员方法

public boolean exists():判断当前对象表示的文件或路径是否存在

public boolean isFile(): 判断当前对象是否表示文件

public boolean isDirectory():判断指定的当前对象是否表示路径

public boolean canRead():判断当前对象表示的文件或路径是否可读

public boolean canWrite():判断当前对象表示的文件或路径是否可写

public boolean canExecute():判断当前对象是否表示可执行的文件

public boolean isHidden():判断当前对象表示的文件或路径是否具有隐藏属性

public boolean isAbsolute():判断当前对象的表示形式是否采用绝对路径的形式

public String getAbsolutePath():获取当前对象的绝对路径,以字符串的形式返回

public File getAbsoluteFile():获取当前对象的绝对路径,返回类型java.io.File

public long lastModified():获取最后修改的时间

public long length():获取当前对象表示的文件的长度

public String getName():获取当前对象表示的文件或路径的名称

public String getPath():获取当前对象表示的文件或路径的带路径名称

下面实现在指定路径下的所有文件中查找给定的字符串

import java.io.*;
public class cam1
{
	public static int mount = 0;
    public static void main(String[] args) 
    {
		String filename = "C:\\Users\\Administrator\\Desktop\\code";
		//创建一个 File 实例,表示路径名是指定路径参数的文件
		File file = new File(filename);
		if(args.length>0) //输入要查找的关键字
		{
			findFile(file, args[0]);
			print(args[0]);
		}
	}
    public static boolean isTrueFile(File file) 
    {
		if(!file.exists() || !file.canRead())
		return false;
		if (file.getName().startsWith("."))
		return false;
		if (file.getName().endsWith("."))
	    return false;
		return true;
	}
    public static void findFile(File file, String word) 
    {
		File[] listFiles = file.listFiles(); 
		//得到一个File数组,它默认是按文件最后修改日期排序的
		for (int i = 0; i < listFiles.length; i++) 
		{
		   if (listFiles[i].isDirectory())
		   findFile(listFiles[i], word);
		   else if (isTrueFile(listFiles[i]))
		   search(listFiles[i], word);
		}
	}
    public static void search(File file, String word) 
    {
		try 
		{
			int j = 0, k = 0, ch = 0;
			String str = null;
			FileReader in = new FileReader(file);
			while ((ch = in.read()) != -1) 
			{
				str += (char) ch;
			}
			if (str != null)
			{
				while (str.indexOf(word, j) != -1) 
				{
					k++;
					j = str.indexOf(word, j) + 1; // 返回第一次出现的指定子字符串在此字符串中的索引
				}
			}
			if (k > 0) 
			{
				System.out.println("在" + file.getAbsolutePath() + "有" + k+ "个关键字");
				mount++;
			}
			in.close();
		} 
		catch (FileNotFoundException e)
		{
			e.printStackTrace();
		} 
		catch (IOException e)
		{
			e.printStackTrace();
		}
	}
    public static void print(String word)
    {
		if (mount != 0) 
		{
			System.out.println("找到" + mount + "个文本包含关键字" + word + "!");
		} 
		else 
		{
			System.out.println("没有找到相应的文件");
		}
	}
}


你可能感兴趣的:(Java)