2016-08-23 10 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

おかげで今ジョニーが働いています – 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(); 
     } 
    } 
} 
関連する問題