2012-05-09 2 views
-2

소스 파일을 병합하고 삭제하는 다음 코드를 작성했지만 어떻게 든 소스 파일이 삭제되지 않습니다. 여기에 누락 된 부분에 대해 알려 주시기 바랍니다.Java를 사용하여 파일을 삭제할 수 없습니다.

public void doDelete(List<String> dID)throws IOException { 

     String DID=null; 

     try{ 
      for(ListIterator<String> iterator = dID.listIterator(); iterator.hasNext();) 
      { 

       DID= (String) iterator.next(); 

       System.out.println("Deleting PDF" +DID); 
       File f =new File("E:\\TestFolder"+ "\\" +DID+".pdf"); 
       if (!f.exists()) { 
         System.err.println("File " + f 
          + " not present to begin with!"); 
         return; 
         } 
       System.out.println(f.length()); 
       System.out.println(f.getAbsolutePath()); 
       boolean success = f.delete(); 
       if (!success){ 
        System.out.println("Deletion failed.");    
       }else{ 
        System.out.println("File deleted."+DID); 
       } 
      } 
     }catch (Exception e) { 
      // TODO: handle exception 
      e.printStackTrace();    
     } 
    } 
} 
+7

대부분의 사람들이 너를 돕는 데 시간이 너무 오래있어서 걱정 스럽다. 도움이 필요하시면 문제를 보여주는 짧은 예를 게시하십시오. –

+4

코드에''System.out.println()''이 많이 있습니다. 그들이 뭐라고하니? – Roy

+1

완전히 관련성이없는 코드를 많이 게시합니다. 간단히 살펴보면 doDelete()를 실제로 호출 한 부분을 찾을 수 없습니다. 또한 프로그램의 (관련 부분) 출력을 포함하십시오. – Ingo

답변

2

TL이지만 파일 삭제 실패는 일반적으로 파일이 아직 열려 있기 때문입니다. 특히 당신이 Windows에서 그것을 실행하는 것처럼. 삭제 실패의 원인을 얻으려면 Java 7 파일 API를 대신 사용할 수 있습니다. 삭제 실패 이유를 예외로 제공합니다. 당신의 createFileFromBlob 방법에

java.nio.Files.delete(...) 

http://docs.oracle.com/javase/7/docs/api/java/nio/file/Files.html#delete(java.nio.file.Path)

0

당신은) (dID.listIterator (의 각 요소에 대해) 여러 FileOutputStreams을 열기 만 finally 블록 당신의 마지막을 닫는. 이렇게하면 Pulsar의 대답에 따라 삭제되지 않도록 마지막 파일 이외의 모든 파일에 열린 핸들이 남습니다.

관련 문제