主要使用InputStream.read()来读取文本文件中的数据,编码格式为GBK。
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
public class Main{
public static void main(String[] args)throws Exception{
File file = new File(args[0]);
String Find_File_Name = new String(args[1]);
AllFiles(file,Find_File_Name);
}
public static void AllFiles(File file,String Find_File_Name)throws Exception{
if(file.isFile() && file.exists() && file.getName().endsWith(".txt")) {//只能找到文本文件
if (file.getName().contains(Find_File_Name)) {//如果文件名中有和要查找的名字相同的子串
System.out.println(file);
}else {
InputStream inputStream = new FileInputStream(file);
byte[] data = new byte[102400];
int ret = inputStream.read(data);//读取文本文件内容
String message = new String(data, "gbk");
if (message.contains(Find_File_Name)) {//如果文本中由相同的内容
System.out.println(file);
}
}
}
else {
if(file.listFiles() == null){
return;
}
new Thread(()-> {
File[] files = file.listFiles();
for(File file1 : files){
try {
AllFiles(file1, Find_File_Name);
}catch (Exception e){
e.printStackTrace();
}
}
}).start();
}
}
}
纯属娱乐。。。