2016-08-23 223 views
0

我正在使用此代碼刪除驅動器中所有目錄和子目錄中的特定文件,但它不起作用。請在這方面幫助我。 如果我想刪除所有驅動器中的特定文件該怎麼做。刪除目錄和所有子目錄中的特定文件

static String refile= "input.txt"; 
    public static void deletemyfile(File directory) { 
    if (directory.exists()) { 
      File[] files = directory.listFiles(); 
      if (null != files) { 
       for (int i = 0; i < files.length; i++) { 
         System.out.println(files[i].getName()); 
         if (files[i].isDirectory()) { 
           deletemyfile(files[i]); 

         } else { 

          String temp ; 
          temp = files[i].getName();        
          if (temp==refile){ 

          System.out.println("name matched and about to delete"); 

          (files[i]).delete(); 


         } else{ 

          System.out.println("name not matched"); 
         } 



         } 
       } 
      } 
    } else {System.out.println("wrong path"); 
    } 
    } 
+2

它以什麼方式不起作用?您是否收到特定的錯誤訊息? –

+3

使用'equals(...)'方法檢查對象是否相等,使用'=='檢查原語是否相等。在你的代碼中'if(temp == refile)'應該是'if(temp.equals(refile))'。 –

+0

非常感謝jonny現在的工作非常完美 – karthik

回答

0

嘗試使用Java 8作爲您的解決方案。以下內容將遍歷給定目錄中的所有子目錄,並刪除與給定文件名匹配的所有文件。

public static void deleteMyFile(File directory, String filename) { 
    if(directory.isDirectory()) { 
     try { 
      Files.walk(directory.toPath()) 
       .filter(path -> path.getFileName().toString().equals(filename)) 
       .forEach(path -> path.toFile().delete()); 
     } 
     catch(Exception e) { 
      e.printStackTrace(); 
     } 
    } 
} 
相關問題