有没有一种现有方法可以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;
}
}
}
}
问题内容: 好的,我一直在进行以下操作(变量名已更改): 最近,我开始使用FindBugs,这表明我没有正确关闭流。我决定看看是否可以使用finally {}块完成任何操作,然后,我明白了,是的,close()会引发IOException。人们在这里应该做什么?Java库抛出太多已检查的异常。 问题答案: 对于Java 7及更高版本,应使用try- with- resources : 如果您坚持使
Java中FileInputStream和BufferedInputStream的区别是什么?
确实。NET音译库是否存在?请注意,这不是翻译,类似于这个Perl lib: http://www.lingua-systems.com/transliteration/Lingua-Translit-Perl-module/ 我只是发现: http://transliterator.codeplex.com/
问题内容: 关门了 。这个问题是基于观点的。它当前不接受答案。 想要改善这个问题吗? 更新问题,以便通过编辑此帖子以事实和引用的形式回答。 11个月前关闭。 改善这个问题 为什么SQL要求我指定要对哪些属性进行分组?为什么不能只使用所有非聚合? 如果一个属性没有聚合并且不在 GROUP BY 子句中,那么不确定元组的选择将是唯一的选择,前提是元组是无序的(mysql做到了这一点),这是一个巨大的难
问题内容: Java中的InputStreams和OutputStreams是否在销毁时关闭()?我完全理解这可能是错误的形式(尤其是在C和C ++世界中),但是我很好奇。 另外,假设我有以下代码: 无名的FileInputStream是否在p.load()之后超出范围,并因此被破坏,就像C ++范围规则一样?我尝试在Google上搜索Java的匿名变量范围,但这并没有达到我的预期。 谢谢。 问题
JavaDoc for没有提到关闭底层的: https://docs.oracle.com/javase/8/docs/api/java/io/InputStreamReader.html#close-- 从课堂上复制的描述:Reader 关闭流并释放与之关联的所有系统资源。流关闭后,进一步的read()、ready()、mark()、reset()或skip()调用将抛出IOException。