Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/395.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 请求完成时Tomcat是否删除文件?_Java_Tomcat_Delete File_Apache Commons Fileupload - Fatal编程技术网

Java 请求完成时Tomcat是否删除文件?

Java 请求完成时Tomcat是否删除文件?,java,tomcat,delete-file,apache-commons-fileupload,Java,Tomcat,Delete File,Apache Commons Fileupload,我遇到了一个非常奇怪的问题。我正在使用commons fileupload(1.2.1)在我的webapp中处理文件上传(托管在tomcat 7.0.23中,并且设置了distributable标志)。一旦我从我的DiskFileItemFactory(无FileCleaningTracker)中获得了一个DiskFileItem实例,我就使用它的write方法来存储该文件(在DiskFileItemFactory配置为使用的同一目录中,以防它需要在文件流入时将文件写入磁盘)。问题是这个新文件(

我遇到了一个非常奇怪的问题。我正在使用
commons fileupload
(1.2.1)在我的webapp中处理文件上传(托管在tomcat 7.0.23中,并且设置了
distributable
标志)。一旦我从我的
DiskFileItemFactory
(无
FileCleaningTracker
)中获得了一个
DiskFileItem
实例,我就使用它的
write
方法来存储该文件(在
DiskFileItemFactory
配置为使用的同一目录中,以防它需要在文件流入时将文件写入磁盘)。问题是这个新文件(由我显式创建和命名)在请求完成处理后被删除。您可以想象,当我需要再次访问该文件时,这是有问题的

看似相关的花絮:

  • 该目录不是servlet上下文中的默认临时目录,也不是Tomcat目录下的目录
  • 在另一个代码路径中,我立即复制该文件(不是在另一个请求中),并且该副本不会被删除
  • 即使在请求完成之前I
    chmod a-w
    该文件,在请求完成时它仍然会被删除

谢谢你的帮助。

罪犯呢?一个9年多前做“清理”的零散的
finalize
方法。

寓意:不要编写finalize()方法。。。当你需要的时候,在最后的{}个街区清理你的资源,在那里你可以看到它的发生。@EJP你在向唱诗班布道,伙计。我没有写那段代码,但我很乐意删除它。