当前位置: 首页 > 面试题库 >

关闭时是否存在现有FileInputStream删除?

扈阳辉
2023-03-14
问题内容

有没有一种现有方法可以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。