可以打包成一个jar,把路径以及要搜索的字符串传入进来,全给你搜索出来,一个都不放过
比如传入 D:\java\Code 和 ‘字符串编码’
则会把D:\java\Code下面所有包含 ‘字符串编码’的文件全部找出来
代码如下:
public class FileSearcher {
public static void main(String[] args) {
if (args.length != 2) {
System.out.println("Usage: java FileSearcher <directory> <searchString>");
System.exit(1);
}
String directory = args[0];
String searchString = args[1];
try {
searchFiles(Paths.get(directory), searchString);
} catch (IOException e) {
e.printStackTrace();
}
}
public static void searchFiles(Path rootDir, String searchString) throws IOException {
Files.walkFileTree(rootDir, new SimpleFileVisitor<Path>() {
@Override
public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException {
if (Files.isRegularFile(file) && containsString(file, searchString)) {
System.out.println("Found in file: " + file.toString());
}
return FileVisitResult.CONTINUE;
}
@Override
public FileVisitResult visitFileFailed(Path file, IOException exc) throws IOException {
System.err.println("Failed to access file: " + file.toString());
return FileVisitResult.CONTINUE;
}
});
}
private static boolean containsString(Path file, String searchString) throws IOException {
List<String> lines = Files.readAllLines(file);
for (String line : lines) {
if (line.contains(searchString)) {
return true;
}
}
return false;
}
}