11import java .io .*;
2- import java .nio .file .Files ;
3- import java .nio .file .Path ;
4- import java .nio .file .Paths ;
2+ import java .nio .file .*;
53import java .util .*;
64import java .util .regex .Matcher ;
75import java .util .regex .Pattern ;
86import java .util .stream .Collectors ;
7+ import java .util .stream .Stream ;
98
109public class CodeStringSearcher {
1110
@@ -36,11 +35,9 @@ public static void main(String[] args) {
3635 try {
3736 Files .createDirectories (Paths .get (outputDirectory )); // 创建输出目录
3837
39- // 获取目录下的所有C #文件
38+ // 获取目录及其子目录下的所有C #文件
4039 Path dirPath = Paths .get (csDirectory );
41- List <Path > csFiles = Files .list (dirPath )
42- .filter (path -> path .toString ().endsWith (".cs" ) || path .toString ().endsWith (".java" ))
43- .collect (Collectors .toList ()); // 使用 collect(Collectors.toList())
40+ List <Path > csFiles = getFilesRecursively (dirPath , ".cs" , ".java" );
4441
4542 for (Path csFile : csFiles ) {
4643 analyzeCode (csFile , searchText , outputDirectory );
@@ -50,6 +47,15 @@ public static void main(String[] args) {
5047 }
5148 }
5249
50+ private static List <Path > getFilesRecursively (Path dirPath , String ... extensions ) throws IOException {
51+ try (Stream <Path > walk = Files .walk (dirPath )) {
52+ return walk .filter (Files ::isRegularFile )
53+ .filter (path -> Arrays .stream (extensions )
54+ .anyMatch (ext -> path .toString ().endsWith (ext )))
55+ .collect (Collectors .toList ());
56+ }
57+ }
58+
5359 private static void analyzeCode (Path csFile , String searchText , String outputDirectory ) {
5460 try (BufferedReader br = new BufferedReader (new FileReader (csFile .toFile ()))) {
5561 List <String > lines = new ArrayList <>();
0 commit comments