尝试删除后临时文件保留在linux中

时间:2017-01-05 11:02:20

标签: java linux fuse

我正在编写一个java servlet,它从客户端下载文件并将其移动到某个特定位置。移动后我删除下载的文件。有时linux会创建.fuse_hidden ______命名文件。他们一直呆在那里,直到我重启服务器进程。下载后,我关闭所有打开的流。它通常发生在已安装的USB闪存驱动器上。

这是我的代码段

    try{
           ...
           inputStream = new RandomAccessFile(new File(sourcePath), "r");
           inputChannel = inputStream.getChannel();
           ....
        }
    finally{
           inputChannel.close(); 
           inputStream .close();
       }
    new File(sourcePath).delete();

1 个答案:

答案 0 :(得分:1)

这意味着文件上至少还有一个打开的文件句柄。当最后一个句柄关闭后,隐藏文件将被删除。

您说它们在您杀死服务器时会消失,因此您的服务器仍然至少有一个句柄打开该文件。您可以使用lsof命令来证明确实是您的服务器具有打开的句柄。

在成功和异常情况下,仔细检查您是否正在关闭java中文件的所有打开流。