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

标签 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();

最佳答案

表示该文件至少还有一个打开的文件句柄。当最后一个句柄关闭后,隐藏文件将被删除。

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

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

关于java - 尝试删除后临时文件保留在 linux 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41483316/

相关文章:

java - 尝试使用 drawString 方法打印名称

linux - Shell-fu 列出目录中包含单词或短语实例的所有文件

linux - 复制文件,不包括 linux 中的某些文件夹

c - 从 FUSE 调试系统调用

linux - 内存中的 FUSE 文件系统

python - 限制文件浏览器小型读取

java - 传递需要基类对象的派生类对象

java - setHasFixedSize(true) 导致应用程序崩溃

java.lang.IllegalStateException : Could not find a method saveData(view)

linux - Fedora 20如何在启动结束时运行脚本