精华内容
下载资源
问答
  • 一、概述在本篇文章中,给大家介绍一下如何将文件进行zip压缩以及如何对zip包解压。所有这些都是使用Java提供的核心库java.util.zip来实现的。二、压缩文件首先我们来学习一个简单的例子-压缩单个文件。将一个名为...

    一、概述

    在本篇文章中,给大家介绍一下如何将文件进行zip压缩以及如何对zip包解压。所有这些都是使用Java提供的核心库java.util.zip来实现的。

    二、压缩文件

    首先我们来学习一个简单的例子-压缩单个文件。将一个名为test1.txt的文件压缩到一个名为Compressed.zip的zip文件中。

    public class ZipFile {

    public static void main(String[] args) throws IOException {

    //输出压缩包

    FileOutputStream fos = new FileOutputStream("src/main/resources/compressed.zip");

    ZipOutputStream zipOut = new ZipOutputStream(fos);

    //被压缩文件

    File fileToZip = new File("src/main/resources/test1.txt");

    FileInputStream fis = new FileInputStream(fileToZip);

    //向压缩包中添加文件

    ZipEntry zipEntry = new ZipEntry(fileToZip.getName());

    zipOut.putNextEntry(zipEntry);

    byte[] bytes = new byte[1024];

    int length;

    while((length = fis.read(bytes)) >= 0) {

    zipOut.write(bytes, 0, length);

    }

    zipOut.close();

    fis.close();

    fos.close();

    }

    }

    三、压缩多个文件

    接下来,我们看看如何将多个文件压缩为一个zip文件。我们将把test1.txt和test2.txt压缩成multiCompressed.zip:

    public class ZipMultipleFiles {

    public static void main(String[] args) throws IOException {

    List srcFiles = Arrays.asList("src/main/resources/test1.txt", "src/main/resources/test2.txt");

    FileOutputStream fos = new FileOutputStream("src/main/resources/multiCompressed.zip");

    ZipOutputStream zipOut = new ZipOutputStream(fos);

    //向压缩包中添加多个文件

    for (String srcFile : srcFiles) {

    File fileToZip = new File(srcFile);

    FileInputStream fis = new FileInputStream(fileToZip);

    ZipEntry zipEntry = new ZipEntry(fileToZip.getName());

    zipOut.putNextEntry(zipEntry);

    byte[] bytes = new byte[1024];

    int length;

    while((length = fis.read(bytes)) >= 0) {

    zipOut.write(bytes, 0, length);

    }

    fis.close();

    }

    zipOut.close();

    fos.close();

    }

    }

    四、压缩目录

    下面的例子,我们将zipTest目录及该目录下的递归子目录文件,全都压缩到dirCompressed.zip中:

    public class ZipDirectory {

    public static void main(String[] args) throws IOException, FileNotFoundException {

    //被压缩的文件夹

    String sourceFile = "src/main/resources/zipTest";

    //压缩结果输出,即压缩包

    FileOutputStream fos = new FileOutputStream("src/main/resources/dirCompressed.zip");

    ZipOutputStream zipOut = new ZipOutputStream(fos);

    File fileToZip = new File(sourceFile);

    //递归压缩文件夹

    zipFile(fileToZip, fileToZip.getName(), zipOut);

    //关闭输出流

    zipOut.close();

    fos.close();

    }

    /**

    * 将fileToZip文件夹及其子目录文件递归压缩到zip文件中

    * @param fileToZip 递归当前处理对象,可能是文件夹,也可能是文件

    * @param fileName fileToZip文件或文件夹名称

    * @param zipOut 压缩文件输出流

    * @throws IOException

    */

    private static void zipFile(File fileToZip, String fileName, ZipOutputStream zipOut) throws IOException {

    //不压缩隐藏文件夹

    if (fileToZip.isHidden()) {

    return;

    }

    //判断压缩对象如果是一个文件夹

    if (fileToZip.isDirectory()) {

    if (fileName.endsWith("/")) {

    //如果文件夹是以“/”结尾,将文件夹作为压缩箱放入zipOut压缩输出流

    zipOut.putNextEntry(new ZipEntry(fileName));

    zipOut.closeEntry();

    } else {

    //如果文件夹不是以“/”结尾,将文件夹结尾加上“/”之后作为压缩箱放入zipOut压缩输出流

    zipOut.putNextEntry(new ZipEntry(fileName + "/"));

    zipOut.closeEntry();

    }

    //遍历文件夹子目录,进行递归的zipFile

    File[] children = fileToZip.listFiles();

    for (File childFile : children) {

    zipFile(childFile, fileName + "/" + childFile.getName(), zipOut);

    }

    //如果当前递归对象是文件夹,加入ZipEntry之后就返回

    return;

    }

    //如果当前的fileToZip不是一个文件夹,是一个文件,将其以字节码形式压缩到压缩包里面

    FileInputStream fis = new FileInputStream(fileToZip);

    ZipEntry zipEntry = new ZipEntry(fileName);

    zipOut.putNextEntry(zipEntry);

    byte[] bytes = new byte[1024];

    int length;

    while ((length = fis.read(bytes)) >= 0) {

    zipOut.write(bytes, 0, length);

    }

    fis.close();

    }

    }

    要压缩子目录及其子目录文件,所以需要递归遍历

    每次遍历找到的是目录时,我们都将其名称附加“/”,并将其以ZipEntry保存到压缩包中,从而保持压缩的目录结构。

    每次遍历找到的是文件时,将其以字节码形式压缩到压缩包里面

    五、解压缩zip压缩包

    下面为大家举例讲解解压缩zip压缩包。在此示例中,我们将compressed.zip解压缩到名为

    public class UnzipFile {

    public static void main(String[] args) throws IOException {

    //被解压的压缩文件

    String fileZip = "src/main/resources/unzipTest/compressed.zip";

    //解压的目标目录

    File destDir = new File("src/main/resources/unzipTest");

    byte[] buffer = new byte[1024];

    ZipInputStream zis = new ZipInputStream(new FileInputStream(fileZip));

    //获取压缩包中的entry,并将其解压

    ZipEntry zipEntry = zis.getNextEntry();

    while (zipEntry != null) {

    File newFile = newFile(destDir, zipEntry);

    FileOutputStream fos = new FileOutputStream(newFile);

    int len;

    while ((len = zis.read(buffer)) > 0) {

    fos.write(buffer, 0, len);

    }

    fos.close();

    //解压完成一个entry,再解压下一个

    zipEntry = zis.getNextEntry();

    }

    zis.closeEntry();

    zis.close();

    }

    //在解压目标文件夹,新建一个文件

    public static File newFile(File destinationDir, ZipEntry zipEntry) throws IOException {

    File destFile = new File(destinationDir, zipEntry.getName());

    String destDirPath = destinationDir.getCanonicalPath();

    String destFilePath = destFile.getCanonicalPath();

    if (!destFilePath.startsWith(destDirPath + File.separator)) {

    throw new IOException("该解压项在目标文件夹之外: " + zipEntry.getName());

    }

    return destFile;

    }

    }

    喜欢 (2)or分享 (0)

    展开全文
  • zip文件格式是通用的文档压缩标准。自1.6版本起,Python中zipfile模块能够直接处理zip文件里的数据,例如需要将对应目录或多个文件打包或压缩成zip格式,或者需要查看一个zip格式的归档文件中部分或者所有文件同时...

    zip文件格式是通用的文档压缩标准。自1.6版本起,Python中zipfile模块能够直接处理zip文件里的数据,例如需要将对应目录或多个文

    件打包或压缩成zip格式,或者需要查看一个zip格式的归档文件中部分或者所有文件同时避免讲这些文件展开到磁盘上。使用ZipFile类来

    操作zip文件。

    创建一个ZipFile对象,表示一个zip文件。

    参数file:文件的路径或者类似文件对象

    参数mode:读“r”,写入“w”,添加“a”

    参数compression:ZIP_STORED(无压缩),ZIP_DEFLATED(压缩,需要zlib支持)

    参数allowZip64:默认情况下报错,将其设为Trus,ZipFIle将用ZIP64扩展进行创建文件。

    解压ZIP文档中的所有文件到指定目录。

    推荐学习《python教程》

    下面示例演示了读取一个ZIP文档,将文档里所有文件解压到名为“work”的文件里。#-*-coding: UTF-8 -*-

    import zipfile

    if __name__ == '__main__':

    zFile = zipfile.ZipFile("F:xt.zip", "r")

    #ZipFile.namelist(): 获取ZIP文档内所有文件的名称列表

    for fileM in zFile.namelist():

    zFile.extract(fileM, "F:work")

    zFile.close();

    展开全文
  • ubuntu分卷压缩文件怎么解压

    千次阅读 2017-11-08 16:37:28
    1.分卷压缩ubuntu下没有默认安装... 安装过后,使用以下命令进行分卷压缩:rar a -vSIZE 压缩后的文件名 被压缩的文件或者文件夹例如:rar a -v50000k eclipse.rar eclipse此命令即为对eclipse文件夹进行分卷压缩,每
    1.分卷压缩
    ubuntu下没有默认安装rar,可以通过 sudo apt-get install rar,sudo apt-get install unrar 来安装rar. 安装过后,使用以下命令进行分卷压缩:
    rar a -vSIZE 压缩后的文件名 被压缩的文件或者文件夹

    例如:
    rar a -v50000k eclipse.rar eclipse

    此命令即为对eclipse文件夹进行分卷压缩,每卷的大小为50000k,压缩后的文件名为eclipse.rar
    2.解压
    对任何一个分卷执行:
    rar e eclipse.part1.rar

    二,使用tar
    1.分卷压缩
    tar cvzpf - eclipse | split -d -b 50m

    上面的命令是将eclipse这个文件夹分卷压缩,每卷50m,注意eclipse 前面有空格.压缩完之后,会被命名为x00,x01,x02。。。
    2.解压
    首先需要合并: 合并的命令是:
    cat x*>eclipse.tar.gz

    然后解压:
    tar xzvf eclipse.tar.gz
    展开全文
  • 如题。。。。。。。。。。。。
  • 如何把文件打包为zip包,那么反过来怎么把zip文件包解压为正常文件呢?把zip包解压为正常文件包,要比把文件打包为zip简单一点。因为存在多级文件的压缩,却不存在多级文件的解压缩。也就是说,压缩时,你要把所有...

    前面,笔者讲到。如何把文件打包为zip包,那么反过来怎么把zip文件包解压为正常文件呢?把zip包解压为正常文件包,要比把文件打包为zip简单一点。因为存在多级文件的压缩,却不存在多级文件的解压缩。也就是说,压缩时,你要把所有文件都塞到压缩包里。而解压缩只需要解压一级,压缩包里面的压缩文件则不必理会。

    直接上代码喽:

    /**

    * 解压文件

    * @param zipPath 要解压的目标文件

    * @param descDir 指定解压目录

    * @return 解压结果:成功,失败

    */

    @SuppressWarnings("rawtypes")

    public boolean decompressZip(String zipPath, String descDir) {

    File zipFile = new File(zipPath);

    boolean flag = false;

    File pathFile = new File(descDir);

    if(!pathFile.exists()){

    pathFile.mkdirs();

    }

    ZipFile zip = null;

    try {

    zip = new ZipFile(zipFile, Charset.forName("gbk"));//防止中文目录,乱码

    for(Enumeration entries = zip.entries(); entries.hasMoreElements();){

    ZipEntry entry = (ZipEntry)entries.nextElement();

    String zipEntryName = entry.getName();

    InputStream in = zip.getInputStream(entry);

    //指定解压后的文件夹+当前zip文件的名称

    String outPath = (descDir+zipEntryName).replace("/", File.separator);

    //判断路径是否存在,不存在则创建文件路径

    File file = new File(outPath.substring(0, outPath.lastIndexOf(File.separator)));

    if(!file.exists()){

    file.mkdirs();

    }

    //判断文件全路径是否为文件夹,如果是上面已经上传,不需要解压

    if(new File(outPath).isDirectory()){

    continue;

    }

    //保存文件路径信息(可利用md5.zip名称的唯一性,来判断是否已经解压)

    System.err.println("当前zip解压之后的路径为:" + outPath);

    OutputStream out = new FileOutputStream(outPath);

    byte[] buf1 = new byte[2048];

    int len;

    while((len=in.read(buf1))>0){

    out.write(buf1,0,len);

    }

    in.close();

    out.close();

    }

    flag = true;

    //必须关闭,要不然这个zip文件一直被占用着,要删删不掉,改名也不可以,移动也不行,整多了,系统还崩了。

    zip.close();

    } catch (IOException e) {

    e.printStackTrace();

    }

    return flag;

    }

    找个例子实现一下:

    就你了!

    be78558f22b0cb1563faab74b8381ca7.png

    调用:

    String deal_zip = "C:\\20180909.zip";

    String agter_zip = "D:\\red_ant_file";//解压完塞到这里吧

    boolean is_success = AllServiceIsHere.decompressZip(deal_zip, agter_zip);

    if(is_success) {

    System.err.println("恭喜你,解压成功!");

    }else {

    System.err.println("sorry, you failed!");

    }

    走你!

    8d32f6e772af61828bbcf896c5e33f4c.png

    嗯嗯,达到了我所要求的。赶集去喽!

    55c6b5930767821fca8b38206715fb41.png

    d3f7d3676205e6feb011099bca69535e.png

    1af47276bf936e9591f97353ff1f6f6e.png

    展开全文
  • # 怎么用c#写一个解压指定目录下所有的压缩文件,并且把压缩文件里面的内容放进指定文件夹呢?
  • 首先你要确保自己有完整的压缩包,可能对方将压缩包分为5个,那么你就需要拿到5份压缩包,然后将压缩包放在同一文件夹内,随便点其中一个就能解压了。 二、WinRAR怎么分卷压缩: 2 2.1 如果你的压缩工具是上面这种...
  • 01.前言 我在上篇文章“关于压缩和解压缩的一些名词简介”中简单介绍过“分卷压缩”,“分卷”就是化整为零,主要用于将非常大的文件压缩成多个“子压缩包”,解压的时候,必须集齐全部“子压缩包”在一个文件夹,...
  • 但是要不就是压缩之后的文件会有空文件夹在压缩包中,要不就是压缩之后的文件在Linux服务器上解压出现问题,产生这个问题的主要原因是文件的目录分隔符没有设置正确,如果我们想让压缩之后的文件能在Linux服务器上...
  • 如何把文件打包为zip包,那么反过来怎么把zip文件包解压为正常文件呢?把zip包解压为正常文件包,要比把文件打包为zip简单一点。因为存在多级文件的压缩,却不存在多级文件的解压缩。也就是说,压缩时,你要把所有...
  • 代码奉上:解压文件夹:'''解压配置的文件夹:return:'''dirpath = “解压的目标路径”filepath = "需要解压压缩文件"if not os.path.exists(dirpath):os.mkdir(dirpath)zfobj = zipfile.ZipFile(filepath)for...
  • 如何实现像右键解压到当前文件夹的功能:即压缩文件里面所有的东西都解压出来。
  • SharpZipLib压缩文件和文件夹

    千次阅读 2012-05-28 09:59:56
    正常zip方式压缩文件,然后用wrar工具可以解压出来(开始用wrar3.4版本的怎么也解不出来,以为是不支持wrar解压,后来改用3.9及4.11版本可以实现正常解压,搞了半天时间,原来是版本问题,版本不对害死人啊),另外...
  • 方法/步骤1下载好后解压发现没有data文件夹,这可怎么办,网上查看了很多的发方法,总是看不懂,新版原来是改了,需要初始化,下面一步一步道来。2新建一个data文件夹。3打开配置文件my-default.ini看到里面的...
  • Python语言对文件方面的处理还是很方便的,例如以前有为大家介绍过Python读取分割压缩TXT文本文件的方法、Python批量删除windows下svn文件夹的方法等,都是很实用的文件相关操作方法。python脚本如何解压指定路径下...
  • 如何把文件打包为zip包,那么反过来怎么把zip文件包解压为正常文件呢?把zip包解压为正常文件包,要比把文件打包为zip简单一点。因为存在多级文件的压缩,却不存在多级文件的解压缩。也就是说,压缩时,你要把所有...
  • 通过ZipInStream类将压缩文件解压到指定的文件夹中:源程序是:import java.io.*;import java.util.zip.*;public class Decompressing { // 创建文件public static void main(String[] temp) {ZipInputStream zin; /...
  • 矩池云怎么上传文件夹

    千次阅读 2020-06-30 10:07:04
    在租用矩池云的过程中发现不能在网盘中直接上传文件夹,不知道有什么解决办法嘛? 我经过尝试找到两种方法,压缩包上传与SCP上传。 压缩包上传 第一种压缩包上传,我看到了CSDN上有大佬已经写过了,这边用简单的方法...
  • 第二种方法,例如BatterZip此类Mac压缩解压工具打包加密。第三种方法,Mac加密软件,例如Espionage for mac,可以直接对文件夹和文件进行加密。整个来说,用系统自带的磁盘工具最麻烦,Mac加密软件最方便。 第一种...
  • 将文件都放在一个文件夹下然后对文件夹进行压缩解压解压文件夹随着文件夹解压; 所有文件都会跑出来,这样利于我们使用图片文件下面经验中的方法好在可以对文件单独的多项文件进行压缩,需要使用文件时只要...
  • 下面这个示例便是使用ASP.NET来实现上传文件夹并对文件夹进行压缩以及解压。 ASP.NET页面设计:TextBox和Button按钮。 TextBox中需要自己受到输入文件夹的路径(包含文件夹),通过Button实现选择文件夹的问题还...
  • zip解压APP为用户提供了完全免费的文件解压缩功能服务,超高效的压缩解压,支持将文档、图片、PDF和图片等多种文件夹进行压缩压缩解压的过程稳定高效,不会 影响文件打开也不会有乱码出现。还可以解压各种不同...
  • (文件夹名)--查看路径2、dir---查看当前路径下的所有文件3、unzip***.zip-----压缩文件到当前目录4、wget(路径)----下载5、mv*******----移动或者重命名6、rm******----删除一次可以删除多个7、pwd----显示当前路径8...
  • 之前遇到了一个坑,由于网络问题,一直没有记录下来,今天...这就很奇怪了,我明明上传了,而且看打印的log也显示解压成功,怎么会显示没有文件呢?我后来打印了那个目录下的所有文件列表,发现了一个奇怪的问题,文
  • tar文件是什么?怎么解压

    千次阅读 2020-06-06 19:40:18
    这种文件一般的压缩软件貌似是打不开的,这里使用命令行对它解压。 #首先切换到你想要把它解压的地方,例如我想解压到d盘: #直接在cmd中输入: d:#回车 tar -xvf filename#直接复制过来就好了 然后你就能在d盘看到...
  • 因项目中使用大量图片上传功能,请求次数过多,导致... 解压缩时长24秒测试环境:ubuntu 13, jdk 1.8缺点:1 压缩文件不能为文件夹2 压缩比例不明显,文件大小没怎么缩小/*** 压缩** @param files* 压缩的文件* @param ...
  • 最近有个需求是上传一个压缩包到服务器并实现解压缩,网上找了几个使用ftp上传的例子但是没有实现,各方面总结加上自己的理解编写,最后使用sftp进行涉及,最后实现了文件的上传、下载、删除、解压缩以及文件夹的...
  • 但是要不就是压缩之后的文件会有空文件夹在压缩包中,要不就是压缩之后的文件在Linux服务器上解压出现问题,产生这个问题的主要原因是文件的目录分隔符没有设置正确,如果我们想让压缩之后的文件能在Linux服务器上...
  • weblogic的安装jar包,被分包压缩解压之后变成文件夹了--求大神解答 直接说问题: 安装的weblogic 的jar,由于大于1G,传到工作电脑上时,被分成3个压缩包 直接解压三个压缩包后,形成了一个文件夹。 想要把它...

空空如也

空空如也

1 2 3 4 5 ... 8
收藏数 148
精华内容 59
关键字:

压缩文件夹怎么解压