2011-12-27 78 views
2

我真的很失望,讨论一个类似的Java 6文件删除问题,无法找到这些类似的帖子上删除Post1Post2这些类似的帖子上的解决方案。用随机访问文件删除Java 6文件

我正在从FTP服务器下载文件的应用程序。此下载是通过获取流,从此流中读取并将其写入文件RandomAccessFile来实现的。如果下载损坏,我希望删除磁盘上的文件。

我无法手动或通过应用程序删除该文件。很明显,某些文件处理程序仍然因文件删除失败而导致文件锁定。 但是,我无法理解哪些文件处理程序拥有文件锁,因为我已确保关闭所有文件和流对象。

最后,该代码段

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

是否从文件中读取比较校验和代码?如果是,它是否关闭所有流? – 2011-12-27 07:36:29

+0

宾果! 好吧我不相信我没有关闭比较校验和代码中的文件对象。谢谢 – shabeena 2011-12-27 07:41:09

回答

1

如果您在此处抛出任何未检查的异常,该文件(S)将不会被关闭。

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

是的,我已经关闭了在finally代码块中的资源在实际code.Have编辑它在这里使短片段short.Thanks无论如何。 – shabeena 2011-12-27 11:29:35