当前位置: 首页 > 知识库问答 >
问题:

通过Java解压zip文件时获取FileNotFoundException

弓泰
2023-03-14

我有一个方法,解压缩压缩文件通过Java。

这种方法效果很好。

但最近我试图用这个方法解压某个文件(final output.zip),但遇到了一个运行时异常。

下面是该方法的代码:

public static List<String> unzipFiles(File zipFile, File targetDirectory) {
    List<String> files = new ArrayList<String>();                       
    try (FileInputStream fileInputStream = new FileInputStream(zipFile); ZipArchiveInputStream zipInputStream = new ZipArchiveInputStream(new BufferedInputStream(fileInputStream));){                  
        ZipEntry zipEntry;
        while ((zipEntry = zipInputStream.getNextZipEntry()) != null) {
            int length;
            byte data[] = new byte[bufferGlb];
            String fileName = zipEntry.getName();
            File opFile = new File(targetDirectory, fileName);
            FileOutputStream fileOutputStream = new FileOutputStream(opFile);//This is the line where the exception is thrown
            BufferedOutputStream dest = new BufferedOutputStream(fileOutputStream, bufferGlb);
            while ((length = zipInputStream.read(data, 0, bufferGlb)) != -1) {
                dest.write(data, 0, length);
            }
            dest.flush();
            files.add(fileName);
            fileOutputStream.close();
        }
    } catch (Exception e) {
        e.printStackTrace();
    } 
    return files;
}
//library import used:
//import org.apache.commons.compress.archivers.zip.ZipArchiveInputStream;

重要的是要注意,我能够成功地使用WinRar解压缩此文件。

在上面的代码中,我获取异常的那一行用注释标记。

我得到的异常的堆栈跟踪如下:

java.io.FileNotFoundException: final output/0123450.pdf (No such file or directory)
    at java.io.FileOutputStream.open0(Native Method) ~[?:1.8.0_191]
    at java.io.FileOutputStream.open(FileOutputStream.java:270) ~[?:1.8.0_191]
    at java.io.FileOutputStream.<init>(FileOutputStream.java:213) ~[?:1.8.0_191]
    at java.io.FileOutputStream.<init>(FileOutputStream.java:162) ~[?:1.8.0_191]
    at ZipUtility.unzipFiles(ZipUtility.java:281)

此外,异常中提到的文件,0123450.pdf实际上在zip文件中。请帮忙。

共有1个答案

钱志
2023-03-14

我以前也遇到过类似的问题。例外情况中提到的文件:

java.io.FileNotFoundException: final output/0123450.pdf (No such file or directory)
    at java.io.FileOutputStream.open0(Native Method) ~[?:1.8.0_191]
    at java.io.FileOutputStream.open(FileOutputStream.java:270) ~[?:1.8.0_191]
    at java.io.FileOutputStream.<init>(FileOutputStream.java:213) ~[?:1.8.0_191]
    at java.io.FileOutputStream.<init>(FileOutputStream.java:162) ~[?:1.8.0_191]
    at ZipUtility.unzipFiles(ZipUtility.java:281)

i、 e 0123450。pdf实际上位于文件最终输出中,而不是直接位于zip文件中。尝试使用一个zip文件,该文件直接包含在其中

 类似资料:
  • 我试图通过CMD解压文件。 所以我安装了WinZip(及其cmd插件)、WinRAR和7-zip。 但当我试图通过CMD执行命令时: 它给出了下一个错误: 此外,我还将文件夹7-z添加到环境变量(属性)中-- 原因又能是什么呢? 在cmd或gitbash中压缩时,出现如下错误 解决方案: 在您的机器中安装7z 在环境变量中设置路径- 现在要在git bash中使用7z- 转到C:\Program

  • 本文向大家介绍Java解压和压缩带密码的zip文件过程详解,包括了Java解压和压缩带密码的zip文件过程详解的使用技巧和注意事项,需要的朋友参考一下 前言 JDK自带的ZIP操作接口(java.util.zip包,请参看文章末尾的博客链接)并不支持密码,甚至也不支持中文文件名。 为了解决ZIP压缩文件的密码问题,在网上搜索良久,终于找到了winzipaes开源项目。 该项目在google cod

  • 问题内容: 我正在尝试解压缩一些zip文件,它的大小约为65兆。下面的代码段: 此方法实际上将文件解压缩: 那个执行者/未来的东西只是为了确保我正确地做。在类Finder中调用此方法,该类在目录中查找zip文件并尝试将其解压缩。它基于此代码http://docs.oracle.com/javase/tutorial/essential/io/walk.html 具体来说: 现在的问题。真的很有趣。

  • 本文向大家介绍Java解压zip文件的关键代码,包括了Java解压zip文件的关键代码的使用技巧和注意事项,需要的朋友参考一下 废话不多说了,给大家贴关键代码了,具体代码如下所示: 好了,代码到此结束,以上所述是小编给大家介绍的Java解压zip文件的关键代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对呐喊教程网站的支持!

  • 我正在尝试解压文件使用Java,它正在编译没有任何错误。当我从工具中调用它,并给出文件的绝对目标路径和源路径时,例如:source:d:\data\test.zip destination:d:\data\op\ 我收到了类似访问被拒绝的错误(我有系统的管理访问权限) 堆栈跟踪: 正在提取:测试/新文本文档-复制(2).txt java.io.FileNotFoundException:d:\da

  • 本文向大家介绍Python压缩解压缩zip文件及破解zip文件密码的方法,包括了Python压缩解压缩zip文件及破解zip文件密码的方法的使用技巧和注意事项,需要的朋友参考一下 python 的 zipfile 提供了非常便捷的方法来压缩和解压 zip 文件。 例如,在py脚本所在目录中,有如下文件: 将 readability 目录中的文件压缩到脚本所在目录的 readability.zip