2012-05-09 24 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を使用できます。例外として、削除の失敗の理由が表示されます。

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

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

0

あなたcreateFileFromBlob方法であなたは((dID.listIteratorの各要素のために)複数のFileOutputStreamsを開く)だけで、あなたのfinallyブロック内の最後の1を閉じています。これにより、最後のもの以外のすべてのファイルにオープンハンドルが残され、Pulsarの解答に従って削除されないようになります。

関連する問題