import java.io.File;
import java.util.ArrayList;
import java.util.List;
import com.google.common.io.Files;
import org.apache.commons.io.Charsets;
import java.io.IOException;
public class FileSearchUtil {
public static void main(String[] args) throws IOException {
//遍历某个文件夹下的所有以.java结尾的文件
//文件夹
String folder = "D:\\CodeWorkSpaces\\IdeaWorkSpaces\\code-temp";
//指定类型的文件
String suffix = ".java";
//包含某个字符串
String word = "logger.";
traverseFolder(folder,suffix,word);
}
public static void traverseFolder(String path,String suffix,String word) throws IOException {
File file = new File(path);
if (file.exists()) {
File[] files = file.listFiles();
if (null == files || files.length == 0) {
// System.out.println("文件夹是空的!");
return;
} else {
for (File file2 : files) {
if (file2.isDirectory()) {
traverseFolder(file2.getAbsolutePath(),suffix,word);
} else {
if(file2.getAbsolutePath().contains(suffix)){
getParams(file2.getAbsolutePath(),word);
}
}
}
}
} else {
// System.out.println("文件不存在!");
}
}
static void getParams(String classPath, String methodName) throws IOException {
//判断当前文件出现次数
int num = 0;
File file = new File(classPath);//定义文件
String params = "";
List<String> lineList = new ArrayList<>();
//每行作为一个字符串,存为列表元素
List<String> strings = Files.readLines(file, Charsets.UTF_8);
/*for (String string : strings) {
//判断是否包含方法名称,即指定字符串
if (string.contains(methodName)) {
//包含不为0
num++;
lineList.add(string);
}
}*/
for (int i = 0; i < strings.size(); i++) {
String string = strings.get(i);
//判断是否包含方法名称,即指定字符串,若是包含,记录数量并且存入集合待用
if (string.contains(methodName)) {
num++;
// TODO 此处可根据自己需求进行优化
if (!string.endsWith(");")) {
string += strings.get(i+1);
if (strings.size() >=2 && !string.endsWith(");")) {
string += strings.get(i+2);
}
if (strings.size() >=3 && !string.endsWith(");")) {
string += strings.get(i+3);
}
if (strings.size() >=4 && !string.endsWith(");")) {
string += strings.get(i+4);
}
if (strings.size() >=5 && !string.endsWith(");")) {
string += strings.get(i+5);
}
if (strings.size() >=6 && !string.endsWith(");")) {
string += strings.get(i+6);
}
if (strings.size() >=7 && !string.endsWith(");")) {
string += strings.get(i+7);
}
if (strings.size() >=8 && !string.endsWith(");")) {
string += strings.get(i+8);
}
if (strings.size() >=9 && !string.endsWith(");")) {
string += strings.get(i+9);
}
if (strings.size() >=10 && !string.endsWith(");")) {
string += strings.get(i+10);
}
lineList.add(string);
} else {
lineList.add(string);
}
}
}
// 如果该文件有指定内容的字符串,遍历输出
if(num > 0){
System.out.println(classPath);
lineList.forEach(line->{
System.out.println(line);
});
}
}
}
遍历某个文件夹下的所有以.java结尾或指定类型的文件
最新推荐文章于 2024-11-12 21:14:07 发布