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

java解压缩文件夹

雍宇定
2023-03-14

首先,我没有看到任何其他问题可以“直接”帮助我解决问题,这就是为什么我决定创建一个新的问题。

以下代码被编程为解压缩多个文件和文件夹。

try {
    BufferedOutputStream dest = null;
    FileInputStream fis = new FileInputStream(file);
    CheckedInputStream checksum = new CheckedInputStream(fis, new Adler32());
    ZipInputStream zis = new ZipInputStream(new BufferedInputStream(checksum));
    ZipEntry entry;
    while ((entry = zis.getNextEntry()) != null) {
        if (!entry.isDirectory()) {
            String rutaarchivo = entry.getName();
            int index= rutaarchivo.lastIndexOf('/');
            rutaarchivo=rutaarchivo.substring(index+1);

            estado.setText("Estado: Copiando archivos nuevos: " + entry);
            setProgress(60);
            int zipCounter = 0;
            int count;
            int BUFFER = 2048;
            byte datazip[] = new byte[BUFFER];
            FileOutputStream fos = new FileOutputStream(rutaarchivo);
            dest = new BufferedOutputStream(fos, BUFFER);
            while ((count = zis.read(datazip, 0, BUFFER)) != -1) {
                dest.write(datazip, 0, count);
                zipCounter += count;
                progreso.setValue(zipCounter);
            }
            dest.flush();

            dest.close();
        }
    }
    zis.close();
} catch (Exception e) {
    e.printStackTrace();
    PrintStream outprint = new PrintStream(new FileOutputStream("output.txt"));
    System.setOut(outprint);
} catch (MalformedURLException ex) {
    ex.printStackTrace();
    PrintStream outprint = new PrintStream(new FileOutputStream("output.txt"));
    System.setOut(outprint);
} catch (IOException ioe) {
    ioe.printStackTrace();
    PrintStream outprint = new PrintStream(new FileOutputStream("output.txt"));
    System.setOut(outprint);
}

这段代码工作正常,但有一个重要的错误:它解压缩文件夹,但不是像这样显示它们:

  • 文件1。txt

它显示了这一点:

  • file1.txt
  • file2.txt
  • file3.txt
  • file4.txt
  • file5.txt
  • file6.txt

我做错了什么?

共有1个答案

宗政财
2023-03-14

您正在将FileOutputStream中的文件名仅设置为文件名。

String rutaarchivo = entry.getName();
int index= rutaarchivo.lastIndexOf('/');  // removes directory path
rutaarchivo=rutaarchivo.substring(index+1); // removes directory path
...
FileOutputStream fos = new FileOutputStream(rutaarchivo);

这是个坏主意。您应该创建自己的基本文件路径,并在其上附加一个文件名。

 类似资料:
  • 问题内容: 我想使用Java代码将文件压缩为zip,rar和7z格式。我也想在指定位置解压缩这些文件。谁能告诉我如何在Java中使用7-zip压缩和解压缩文件? 问题答案: 我用过:sevenzipjbinding.jar sevenzipjbinding-Allplatforms.jar 我现在可以使用这些jar解压缩文件。 尝试使用此链接进行解压缩:http : //sourceforge.n

  • 我正在使用Julia的ZipFile包来提取和处理csv文件。没问题,但是当我遇到zip文件中的zip文件时,我也想处理它,但是遇到了一个错误。 Julia ZipFile文档如下:https://zipfilejl.readthedocs.io/en/latest/ 对如何做到这一点有什么想法吗?

  • 本文向大家介绍java实现文件夹解压和压缩,包括了java实现文件夹解压和压缩的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了java实现文件夹解压和压缩的具体代码,供大家参考,具体内容如下 效果 实现多个文件以及文件夹的压缩和解压 代码分析 小结 压缩 ZipOutputStream可以把多份数据写入zip包; 解压 ZipInputStream可以读取zip格式的流; 以上就是本

  • 问题内容: 我想使用Web浏览器在客户端显示OpenOffice文件,.odt和.odp。 这些文件是压缩文件。使用Ajax,我可以从服务器获取这些文件,但是它们是压缩文件。我必须使用JavaScript解压缩它们,我尝试使用inflate.js,http: //www.onicos.com/staff/iz/amuse/javascript/expert/inflate.txt ,但没有成功。

  • 问题内容: 任何人都可以向我展示在我一直在搜索的Java中压缩和解压缩tar.gzip文件的正确方法,但是我能找到的最多是zip或gzip(单独)。 问题答案: 我最喜欢的是plexus-archiver-请参阅GitHub上的资源。 另一个选项是Apache commons- compress- (请参阅mvnrepository)。 使用plexus-utils,用于取消存档的代码如下所示:

  • 前面小节介绍了如何对文件和目录删除、移动操作,本小节介绍如何使用命令对文件和目录进行压缩与解压操作,常见的压缩包格式有 .bz2、.Z、.gz、.zip、.xz,压缩之后的文件或目录占用更少的空间。 1. tar 命令介绍 下面列举 tar 命令的参数: tar 命令参数名称 功能与作用描述 -c 新建立压缩档案 -x 解压缩 -t 查看内容 -u 更新原压缩包的内容 -z gzip 属性的 -j