关闭时是否存在现有FileInputStream删除?
问题内容:
有没有一种现有方法可以FileInputStream
在关闭后自动删除基础文件?
我打算自己创建实用程序类以进行扩展FileInputStream
并自己完成,但我有点惊讶的是还没有任何东西。
编辑: 用例是我有一个Struts
2动作,该动作InputStream
从页面返回文件下载。据我所知,当操作完成或FileInputStream
不再使用时,我不会收到通知,并且我不希望生成的(可能很大的)临时文件被下载。
这个问题不是特定于Struts 2的,因此我最初没有包含该信息并使问题复杂化。
问题答案:
标准库中没有这样的东西,也没有任何apache-commons库,所以类似:
public class DeleteOnCloseFileInputStream extends FileInputStream {
private File file;
public DeleteOnCloseFileInputStream(String fileName) throws FileNotFoundException{
this(new File(fileName));
}
public DeleteOnCloseFileInputStream(File file) throws FileNotFoundException{
super(file);
this.file = file;
}
public void close() throws IOException {
try {
super.close();
} finally {
if(file != null) {
file.delete();
file = null;
}
}
}
}