删除目录和所有子目录中的特定文件

问题描述:

我正在使用此代码删除驱动器中所有目录和子目录中的特定文件,但它不起作用。请在这方面帮助我。 如果我想删除所有驱动器中的特定文件该怎么做。删除目录和所有子目录中的特定文件

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

尝试使用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(); 
     } 
    } 
}