除非你指定查找的文件都是文本文件,如果是EXCEL等复杂格式的文件,就不一定能达到你的要求了。
下边是只针对文件本文件的方法。
andygulin 的只是不能遍历子文件夹。
--------------------------------------------------------------------
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.util.ArrayList;
import java.util.List;
public class Test {
public static void main(String[] args) throws Exception {
File root = new File("D:\\test");
String find = null;
List<String> result = new ArrayList<String>();
execute(root, find, result);
FileWriter fw = new FileWriter("D:\\result.txt");
for (String data : result) {
fw.write(data + "\r\n");
}
fw.close();
}
public static void execute(File root, String find, List<String> result)
throws Exception {
if (root.isFile()) {
return;
}
File[] files = root.listFiles();
for (File file : files) {
if (file.isDirectory()) {
execute(file, find, result);
} else if (file.isFile()) {
fileHandler(file, find, result);
}
}
}
public static void fileHandler(File file, String find, List<String> result)
throws Exception {
FileReader fr = new FileReader(file);
BufferedReader br = new BufferedReader(fr);
try {
int lineIndex = 0;
StringBuffer linenums = new StringBuffer("line:[");
boolean isSave = false;
while (br.ready()) {
String line = br.readLine();
lineIndex++;
if (line.indexOf(find) != -1) {
linenums.append(lineIndex).append(",");
isSave = true;
}
}
if (isSave) {
linenums.delete(linenums.length() - 1, linenums.length());
linenums.append("]");
result.add(file.getPath());
result.add(linenums.toString());
}
} finally {
br.close();
fr.close();
}
}
}
温馨提示:答案为网友推荐,仅供参考