2011-12-27 7 views
2

私は実際に同様のJava 6ファイルの削除の問題について議論し、flie削除のこれらの同様の投稿で解決策を見つけることができないPost1Post2です。Java 6のファイル削除RandomAccessFileで

私は、FTPサーバーからファイルをダウンロードするアプリケーションに取り組んでいます。このダウンロードは、ストリームを取得し、このストリームから読み取り、ファイルRandomAccessFileに書き込むことによって実現されます。ダウンロードが破損している場合は、ディスク上のファイルを削除したいと考えています。

私は手動でファイルを削除することができませんかapplication.Itを経由して、いくつかのファイルハンドラは、まだファイル削除が失敗であるため、先のファイルのロックを持っていることは非常に明白です。 しかし、私はすべてのファイルとストリームオブジェクトを閉じることを確認したので、どのファイルハンドラがファイルロックを持っているのか理解できません。

最後に、コードスニペット

public class OprDownload extends Observable implements Runnable 
{ 
    public void run() 
    { 
    //Code to connect to ftp,obtain the stream and write to a file 
    if (download complete) 
    { 

     if(mwwObjFile!=null) 
     { 
      mwwObjFile.close(); 

     } 
     if(stream!=null) 
     { 
      stream.close(); 
     } 
     if(compareChecksum())//If checksum match success 
     { 
      updateDownloadDetails(); 
      cwwIntStatus = COMPLETE; 
     } 
     else 
     { 
      cwwIntStatus = CHECKSUM_FAIL; 
      deleteCorruptUpdateFromDownloadsFolder(); 
     } 
    } 
} 

    public void deleteCorruptUpdateFromDownloadsFolder() 
    { 
     String fileOndisk = "FileName"; 
     File mwwFileToBeDeleted = new File(fileOndisk); 

     if(mwwFileToBeDeleted .exists()) 
     { 
      System.out.println("File Deleted"+mwwFileToBeDeleted .delete()); 
     } 

    } 
} 
+2

は、あなたの比較チェックサムコードは、ファイルから読み込むのですか?はいの場合は、すべてのストリームを閉じますか? –

+0

ビンゴ!オーケー 私は比較チェックサムcode.Thanks – shabeena

答えて

1

あなたはここにチェックされない例外をスローした場合は、ファイル(複数可)クローズされません。

public void run() 
{ 
    //Code to connect to ftp,obtain the stream and write to a file 
    if (download complete) // throws an unchecked exception and exits run() 
    { 

あなたは、彼らが常に閉じられますのでfinallyブロック内のリソースを閉じる必要があります。

+1

でファイルオブジェクトを閉じhadntと信じカントはい、私は最終的には実際のcode.Haveでブロック内のリソースを閉じたが、とにかくスニペットshorter.Thanksを作るためにここでそれを編集しました。 – shabeena

関連する問題