Servlet中多线程操作文件后无法关闭?

J2EE 码拜 10年前 (2015-05-10) 838次浏览 0个评论

Java Web项目中的一部分:一个Servlet接受远程客户端的请求,同时下载多个url对应的文件到服务器本地(注意文件是下载到服务器,而不是远端的客户。这些文件是集中到一处用来后期处理,但每天都有新的url下载,这些url由远端的不同客户来指定)。Servlet中,利用线程池管理多线程,实现多个url的同时下载、文件读写操作,文件的打开、关闭等操作都是在Servlet的doGet()中实现。问题如下:
  Servlet执行完成后,这些文件均不可进行”重命名”、“删除”等写操作。但是发现:
 1.关闭Tomcat后即可对这些文件进行写操作;
 2.不用Servlet,直接摘取Servlet中的多线程部分代码运行,下载的文件可以进行写操作。
***************************************************************************************************
请问:这可能是什么原因导致的?

40分
Servlet执行完成后,这些文件均不可进行”重命名”、“删除”等写操作
是否没有关闭这些文件的连接管道呢?
引用 1 楼 magi1201 的回复:

Servlet执行完成后,这些文件均不可进行”重命名”、“删除”等写操作
是否没有关闭这些文件的连接管道呢?

经仔细检查,发现有个文件FileInputStream处理的操作没有close,加上.close()后就可以对文件进行写操作了。非常感谢!


CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明Servlet中多线程操作文件后无法关闭?
喜欢 (0)
[1034331897@qq.com]
分享 (0)

文章评论已关闭!