我正在从文件系统dynamically with a jsp
提供文件这是我的代码:
<%@ page import="java.io.*,java.util.*"
InputStream in = null;
OutputStream responseOut = null;
File file = new File(request.getAttribute("fileToServe"));
try{
in = new FileInputStream(file);
responseOut = response.getOutputStream();
// Transfer bytes from in to out
byte[] buf = new byte[1024];
int len;
while ((len = in.read(buf)) > 0) {
responseOut.write(buf, 0, len);
}
}finally{
if( responseOut != null ) try {
responseOut.close();
} catch( IOException ioe ){}
if( in != null ) try {
in.close();
} catch( IOException ioe ){}
}
file.delete();
%>
我遇到的问题是,文件只在第一次运行代码时被删除,这是在服务器重启之后。后续调用不会删除该文件。
我使用ProcessExplorer来跟踪这个,而且,Java VM正在保存该文件,我真的不知道为什么会发生这种情况。
我们将在Windows操作系统上运行,总是有解决方法吗?
我在互联网上找到了一些关于此的资源,但我无法从中找出如何解决这个问题。
答案 0 :(得分:2)
什么创建文件?我只看到读取然后在该代码中删除它。
需要注意的事项:
close()
您创建的所有文件。如果不这样做,您可能会丢失数据,或者可能需要一些时间来清除隐式关闭。最后,使用来自用户的fileToServe
等属性非常危险。我希望你在其他地方消毒。您应确保仅以这种方式提供允许的文件。
答案 1 :(得分:1)