代码之家  ›  专栏  ›  技术社区  ›  sk.

java.util.zip.ZipFile.close()何时抛出IOException?

  •  6
  • sk.  · 技术社区  · 15 年前

    在什么情况下 java.util.zip.ZipFile.close() 抛出IOException?它的方法签名表明它可以被抛出,但是从源代码来看,似乎没有任何地方会发生这种情况,除非它在本机代码中。在发现异常时,可以采取什么纠正措施(如果有的话)?

    4 回复  |  直到 15 年前
        1
  •  7
  •   Asaph    15 年前

    API docs on ZipFile.close() :

    getInputStream 方法。

    以及 InputStream.close() 抛出 IOException ZipFile.close() 也得扔。根据 API docs for InputStream.close() ,它抛出一个 IOException异常 “如果发生I/O错误”。这不是很好的描述,但它投下了广泛的网。InputStreams可以表示来自文件系统、网络、内存等的流。InputStreams可以涉及需要刷新的缓冲区、需要关闭的套接字、需要释放的资源、需要释放的锁等。ioexception可能会由于各种原因发生。

        2
  •  1
  •   Asaph    15 年前

    从手动关闭(2):

    不检查close()的返回值是一个常见但严重的编程错误。前一次写入(2)操作的错误很可能是在final close()时首先报告的。关闭文件时不检查返回值可能会导致数据无声丢失。这一点在NFS和磁盘配额中尤其明显。

        3
  •  0
  •   Ramon Marco L. Navarro    15 年前

    我不确定,但我认为当下列事件之一发生时会引发IOException:

    • zip文件已被应用程序外部的某个/某个人删除。
    • 当包含zip文件的驱动器卸载/断开连接时

    更多的事件可能是原因,但这是我现在唯一能想到的两件事。

        4
  •  0
  •   Devon_C_Miller    15 年前

    的文档 ZipFile.close() 说:

    想必是本地人 close 方法正在执行关闭输入流。

    关闭 方法 InputStream IOException

    最可能的原因是 正在写入zip文件的文件系统空间不足 底层文件系统出错。除非你能及时找出原因并解决问题,否则你所能做的就是向用户报告情况。