java代码搜索整个系统的文件,在windows上工作正常但在linux ubuntu中无限

Rak*_*Rak 2 java linux

开发搜索实用程序来搜索整个计算机系统的文件,在Windows平台上运行良好但在ubuntu linux中成为一个无限的过程.请帮助克服这个缺陷.以下是代码的主要部分.

public static void fun(File f){  // root directory is passed as argument
try{
   if(f.isDirectory()){
       File [] fi=f.listFiles();
       for(int i=0;i<fi.length;i++){
           if(fileFound==true) break;   // fileFound is boolean data type used as flag to indicate whether the file is found or not
           System.out.println(fi[i].getName());
           fun(fi[i]);
       }
   }
   else{
       if(f.getName().equalsIgnoreCase(txtFile.getText()) || 
         (f.getName().toLowerCase().startsWith(txtFile.getText().toLowerCase())) ||     
         (f.getName().toLowerCase().endsWith(txtFile.getText().toLowerCase()))){    
           l.setText("file found " + f.getAbsolutePath()); // l is JLabel that indicated prints the info like file found and its path
           fileFound=true;
       }
   }
}
catch(Exception e){
}
}
Run Code Online (Sandbox Code Playgroud)

che*_*ken 6

您观察到的错误可能是由嵌套的符号链接引起的.

解决此问题的最有效方法是使用FileUtils#iterateFiles优秀的Apache Commons IO库.