2016-08-23 2 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(); 
     } 
    } 
} 
관련 문제