精华内容
下载资源
问答
  • 本文实例为大家分享了java实现文件夹解压压缩的具体代码,供大家参考,具体内容如下效果实现多个文件以及文件夹的压缩和解压代码分析import java.io.File;import java.io.FileInputStream;import java.io....

    本文实例为大家分享了java实现文件夹解压和压缩的具体代码,供大家参考,具体内容如下

    效果

    实现多个文件以及文件夹的压缩和解压

    代码分析

    import java.io.File;

    import java.io.FileInputStream;

    import java.io.FileNotFoundException;

    import java.io.FileOutputStream;

    import java.io.IOException;

    import java.util.zip.ZipEntry;

    import java.util.zip.ZipInputStream;

    import java.util.zip.ZipOutputStream;

    public class Main {

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

    //解决中文乱码

    //压缩 参数改成你自己的源文件路径和压缩后的文件路径

    //yasuo("C:\\file\\", "C:\\file.zip");

    //解压 参数改成你自己的源文件路径和解压后的文件路径

    jieya("C:\\file.zip", "C:\\file\\");

    }

    public static void jieya(String zipPath, String path) throws IOException, FileNotFoundException {

    //创建解压后的文件夹

    File pt=new File(path.substring(0,path.length()-1));

    if(!pt.exists()) {

    pt.mkdirs();

    }

    //try(resource)来保证InputStream正确关闭

    try(ZipInputStream zip=new ZipInputStream(new FileInputStream(zipPath))){

    //ZipEntry表示一个压缩文件或目录

    ZipEntry entry;

    while((entry=zip.getNextEntry())!=null) {

    String name=entry.getName();

    //压缩文件

    if(!(entry.getName().contains(File.separator))) {

    FileOutputStream file= new FileOutputStream( path+ name);

    int n=0;

    while((n=zip.read())!=-1) {

    file.write(n);

    }

    }else {

    //目录

    int index=name.lastIndexOf("\\");

    File file= new File(path+ name.substring(0,index));

    if(!file.exists()) {

    file.mkdirs();

    }

    //如果不是空目录

    if(index!=name.length()-1) {

    FileOutputStream f= new FileOutputStream( path+ name);

    int n=0;

    while((n=zip.read())!=-1) {

    f.write(n);

    }

    }

    }

    }

    zip.closeEntry();

    }

    }

    public static void yasuo(String path, String zipPath) throws IOException, FileNotFoundException {

    File zp=new File(zipPath);

    if(!zp.exists()) {

    zp.createNewFile();

    }

    try(ZipOutputStream zip=new ZipOutputStream(new FileOutputStream(zp))) {

    File files= new File(path);

    File[] f=files.listFiles();

    for (File file : f) {

    zipAll(zip, file,file.getName());

    }

    }

    }

    public static void zipAll(ZipOutputStream zip, File files,String name) throws IOException, FileNotFoundException {

    if(files.isDirectory()) {

    File[] files2=files.listFiles();

    if(files2.length==0||files2==null) {

    zip.putNextEntry(new ZipEntry(name+File.separator));

    }else{

    for (File file2 : files2) {

    if(file2.isFile()) {

    zip.putNextEntry(new ZipEntry(name+File.separator+file2.getName()));

    int n;

    FileInputStream input=new FileInputStream(file2);

    while((n=input.read())!=-1) {

    zip.write(n);

    }

    }

    else {

    zipAll(zip,file2,name+File.separator+file2.getName());

    }

    }

    }

    }else {

    zip.putNextEntry(new ZipEntry(name));

    int n;

    FileInputStream input=new FileInputStream(files);

    while ((n=input.read())!=-1) {

    zip.write(n);

    }

    }

    }

    }

    小结

    压缩

    ZipOutputStream可以把多份数据写入zip包;

    解压

    ZipInputStream可以读取zip格式的流;

    以上就是本文的全部内容,希望对大家的学习有所帮助

    您可能感兴趣的文章:

    展开全文
  • 一、概述在本篇文章中,给大家介绍一下如何将文件进行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解压缩到名为unzipTest的新文件夹中。

    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;

    }

    }

    欢迎关注我的博客,里面有很多精品合集

    本文转载注明出处(必须带连接,不能只转文字):字母哥博客。

    觉得对您有帮助的话,帮我点赞、分享!您的支持是我不竭的创作动力! 。另外,笔者最近一段时间输出了如下的精品内容,期待您的关注。

    《手摸手教你学Spring Boot2.0》

    《Spring Security-JWT-OAuth2一本通》

    《实战前后端分离RBAC权限管理系统》

    《实战SpringCloud微服务从青铜到王者》

    《VUE深入浅出系列》

    展开全文
  • 使用python自带的zipfile模块做压缩文件夹/解压缩zip文件功能1.[代码][Python]代码#coding=utf-8#甄码农python代码#使用zipfile做目录压缩,解压缩功能import os,os.pathimport zipfiledef zip_dir(dirname,...

    使用python自带的zipfile模块做压缩文件夹/解压缩zip文件功能

    1.[代码][Python]代码

    #coding=utf-8

    #甄码农python代码

    #使用zipfile做目录压缩,解压缩功能

    import os,os.path

    import zipfile

    def zip_dir(dirname,zipfilename):

    filelist = []

    if os.path.isfile(dirname):

    filelist.append(dirname)

    else :

    for root, dirs, files in os.walk(dirname):

    for name in files:

    filelist.append(os.path.join(root, name))

    zf = zipfile.ZipFile(zipfilename, "w", zipfile.zlib.DEFLATED)

    for tar in filelist:

    arcname = tar[len(dirname):]

    #print arcname

    zf.write(tar,arcname)

    zf.close()

    def unzip_file(zipfilename, unziptodir):

    if not os.path.exists(unziptodir): os.mkdir(unziptodir, 0777)

    zfobj = zipfile.ZipFile(zipfilename)

    for name in zfobj.namelist():

    name = name.replace('\\','/')

    if name.endswith('/'):

    os.mkdir(os.path.join(unziptodir, name))

    else:

    ext_filename = os.path.join(unziptodir, name)

    ext_dir= os.path.dirname(ext_filename)

    if not os.path.exists(ext_dir) : os.mkdir(ext_dir,0777)

    outfile = open(ext_filename, 'wb')

    outfile.write(zfobj.read(name))

    outfile.close()

    if __name__ == '__main__':

    zip_dir(r'E:/python/learning',r'E:/python/learning/zip.zip')

    unzip_file(r'E:/python/learning/zip.zip',r'E:/python/learning2')

    展开全文
  • /*** 压缩文件夹工具类 **/ public classCompressUtils {/*** 压缩文件夹到指定zip文件 * *@paramsrcDir 源文件夹 *@paramtargetFile 目标知道zip文件 *@throwsIOException IO异常,抛出给调用者处理*/ public ...

    packageutils;importjava.io.BufferedInputStream;importjava.io.BufferedOutputStream;importjava.io.File;importjava.io.FileInputStream;importjava.io.FileOutputStream;importjava.io.IOException;importjava.io.InputStream;importjava.io.OutputStream;importjava.nio.file.FileVisitResult;importjava.nio.file.Files;importjava.nio.file.Path;importjava.nio.file.Paths;importjava.nio.file.SimpleFileVisitor;importjava.nio.file.attribute.BasicFileAttributes;importjava.util.Objects;importorg.apache.commons.compress.archivers.ArchiveEntry;importorg.apache.commons.compress.archivers.ArchiveInputStream;importorg.apache.commons.compress.archivers.ArchiveOutputStream;importorg.apache.commons.compress.archivers.zip.ZipArchiveEntry;importorg.apache.commons.compress.archivers.zip.ZipArchiveInputStream;importorg.apache.commons.compress.archivers.zip.ZipArchiveOutputStream;importorg.apache.commons.compress.utils.IOUtils;/*** 压缩文件夹工具类

    **/

    public classCompressUtils {/*** 压缩文件夹到指定zip文件

    *

    *@paramsrcDir 源文件夹

    *@paramtargetFile 目标知道zip文件

    *@throwsIOException IO异常,抛出给调用者处理*/

    public static void zip(String srcDir, String targetFile) throwsIOException {try(

    OutputStream outputStream= newFileOutputStream(targetFile);

    ) {

    zip(srcDir, outputStream);

    }

    }/*** 压缩文件夹到指定输出流中,可以是本地文件输出流,也可以是web响应下载流

    *

    *@paramsrcDir 源文件夹

    *@paramoutputStream 压缩后文件的输出流

    *@throwsIOException IO异常,抛出给调用者处理*/

    public static void zip(String srcDir, OutputStream outputStream) throwsIOException {try(

    BufferedOutputStream bufferedOutputStream= newBufferedOutputStream(outputStream);

    ArchiveOutputStream out= newZipArchiveOutputStream(bufferedOutputStream);

    ) {

    Path start=Paths.get(srcDir);

    Files.walkFileTree(start,new SimpleFileVisitor() {

    @Overridepublic FileVisitResult preVisitDirectory(Path dir, BasicFileAttributes attrs) throwsIOException {

    ArchiveEntry entry= newZipArchiveEntry(dir.toFile(), start.relativize(dir).toString());

    out.putArchiveEntry(entry);

    out.closeArchiveEntry();return super.preVisitDirectory(dir, attrs);

    }

    @Overridepublic FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throwsIOException {try(

    InputStream input= newFileInputStream(file.toFile())

    ) {

    ArchiveEntry entry= newZipArchiveEntry(file.toFile(), start.relativize(file).toString());

    out.putArchiveEntry(entry);

    IOUtils.copy(input, out);

    out.closeArchiveEntry();

    }return super.visitFile(file, attrs);

    }

    });

    }

    }/*** 解压zip文件到指定文件夹

    *

    *@paramzipFileName 源zip文件路径

    *@paramdestDir 解压后输出路径

    *@throwsIOException IO异常,抛出给调用者处理*/

    public static void unzip(String zipFileName, String destDir) throwsIOException {try(

    InputStream inputStream= newFileInputStream(zipFileName);

    ) {

    unzip(inputStream, destDir);

    }

    }/*** 从输入流中获取zip文件,并解压到指定文件夹

    *

    *@paraminputStream zip文件输入流,可以是本地文件输入流,也可以是web请求上传流

    *@paramdestDir 解压后输出路径

    *@throwsIOException IO异常,抛出给调用者处理*/

    public static void unzip(InputStream inputStream, String destDir) throwsIOException {try(

    BufferedInputStream bufferedInputStream= newBufferedInputStream(inputStream);

    ArchiveInputStream in= newZipArchiveInputStream(bufferedInputStream);

    ) {

    ArchiveEntry entry= null;while (Objects.nonNull(entry =in.getNextEntry())) {if(in.canReadEntryData(entry)) {

    File file=Paths.get(destDir, entry.getName()).toFile();if(entry.isDirectory()) {if (!file.exists()) {

    file.mkdirs();

    }

    }else{try(

    OutputStream out= newFileOutputStream(file);

    ) {

    IOUtils.copy(in, out);

    }

    }

    }else{

    System.out.println(entry.getName());

    }

    }

    }

    }

    }

    展开全文
  • 满意答案a3354022015.06.07采纳率:50%等级:12已帮助:4706人压缩是一种有效的减小数据量的方法,目前已经被广泛应用于各种类型的信息系统之中。一种压缩文本文件的方法如下:1. 原始文本文件中的非字母的字符,...
  • 1. 前言本文主要介绍Linux系统下最常用的压缩与解压缩工具,本文特别针对压缩文件夹和目录,而作出使用指引。2. 使用zip压缩和解压缩文件夹Ubuntu系统安装zip套件:oucanrong@zcwyou:~$ sudo apt install -y zip ...
  • 网站或者应用数据愈来愈大的情况下,为了方便后期的数据转移等等我们会应用到数据的定期压缩备份,今天,技术宅简单整理下Linux下压缩文件夹命令使用!TAR压缩tar -zcvf /data/backup.tar.gz /wwwroottar -zcvf 打包...
  • linux压缩文件夹命令

    千次阅读 2021-01-25 15:26:37
    压缩当前的文件夹 zip -r ./xahot.zip ./* -r表示递归 zip [参数] [打包后的文件名] [打包的目录路径] 解压 unzip xahot.zip 不解释 linux zip命令的基本用法是: linux zip命令参数列表: -a 将文件转成AS
  • Hello,我是wangzirui32,今天我们来学习如何使用shutil模块解压压缩文件夹。 1. 压缩文件夹 import shutil # 压缩 new_path = shutil.make_archive("要压缩的文件夹", "压缩格式,如zip","压缩后存在哪个位置") ...
  • jupyter notebook 压缩/解压文件夹

    千次阅读 2021-01-21 19:31:38
    压缩 压缩成zip格式 # 压缩当前路径所有文件,输出zip文件 path='./' import zipfile,os zipName = 'student_id.zip' #压缩后文件的位置及名称 f = zipfile.ZipFile( zipName, 'w', zipfile.ZIP_DEFLATED ) for ...
  • 万幸发现可以将其压缩成zip文件,然后解压来使用,这样就好很多了 1 解压文件夹 import zipfile f = zipfile.ZipFile("./粉霜.zip",'r') # 原压缩文件在服务器的位置 for file in f.namelist(): f.extract(file,...
  • 首先给大家演示下 zip 文件的解压方法。 提前读取,避免把压缩包自己加上去。 然后给大家看下 zip 文件...Python 技术篇-用zipfile库进行zip文件的压缩解压实例演示,python压缩本地文件夹为zip文件并保留目录结构。
  • java解压缩文件夹

    2021-02-28 17:02:13
    一、安装JDK和Tomcat1,安装JDK:直接运行jdk-7-windows-i586.exe(相应版本的jdk,这里以jdk-7-windows-i586...2、安装Tomcat:直接解压缩下载文件“apache-tomcat-7.0.33-windows-x86.zip”(相应版本的tomcat,这里...
  • ubuntu环境下文件夹压缩与解压缩

    千次阅读 2021-03-26 17:15:56
    ubuntu环境下文件夹压缩与解压缩 一、准备 一个需要压缩文件夹,里面准备点文件 打开终端,这个 test 文件夹就是刚刚准备好的,里面有 a.c、b.c、z.c 三个文件,准备工作已经做好,就开始行动呗 二、目标 将 ...
  • Linux 文件夹 压缩 命令Linux压缩文件的读取·*.Z compress程序压缩的档案;·*.bz2 bzip2程序压缩的档案;·*.gz gzip程序压缩的档案;·*.tar tar程序打包的数据,并没有压缩过;·*.tar.gz tar程序打包的档案,...
  • packagecom.yinyong.zip;importjava.io.File;importjava.io.FileInputStream;importjava.io.FileOutputStream;importjavax.swing.JFileChooser;importjavax.swing.UIManager;importor...package ...imp...
  • 1. 压缩文件夹 压缩zip格式的压缩包命令格式:zip -r 文件名.zip 文件夹的路径 例如:把当前目录下的test文件夹压缩成test.zip zip -r test.zip test 或者加上-p,可以在压缩时不显示指令的执行过程 zip -p -r test...
  • ICSharp只支持一级文件压缩,所以需要将子文件夹读出来根据路径压缩: 成员变量: List<string> m_fileNames = new List<string>(); 获取子文件夹: public void GetChildFiles(string path) { string...
  • 你可以将你的.zip文件包含在apk的Assets文件夹中,并将它们放在代码中,将.zip复制到内部存储并使用ZipInputStream进行解压缩。首页复印德.zip文件的内部存储,并解压缩文件后:protected void ...
  • 前几天写了文章介绍java文件夹压缩(见http://www.voidcn.com/article/p-naroxxqs-bqy.html),但是发现一个问题,在linux下,如果文件夹内的文件是中文名,那么压缩后,这些文件名全部成为了乱码而无法解压,要能...
  • tar -zcvf /home/xahot.tar.gz /xahottar -zcvf 打包后生成的文件名全...zip 压缩方法:压缩当前的文件夹 zip -r ./xahot.zip ./* -r表示递归zip [参数] [打包后的文件名] [打包的目录路径]解压 unzip xahot.zip ...
  • for filename in filenames: filepath = os.path.join(path,filename) zip_file = zipfile.ZipFile(filepath) #获取压缩文件 for name in zip_file.namelist():# 解压文件 newfilepath = filepath1 if("jdsc" in ...
  • 需求:现在有这样一个需求,有一个chen文件夹,下面有A/B两个文件夹,里面有分别有a1.jpg/a2.jpg和b1.jpg/b2.jpg四个图片,现在我想取出a1.jpg和b1.jpg,然后还按照这个结构打成一个zip包.Java主要代码:/*** 压缩文件或...
  • 文件夹压缩解压: 利用apache提供的ant.jar,提供对单个文件与目录的压缩,并支持是否需要创建压缩源目录、中文路径并且提供了测试类 import org.apache.tools.zip.ZipEntry; import org.apache.tools.zip.ZipFile...
  • js压缩文件或文件夹

    2021-10-22 11:14:25
    文章目录JS压缩文件/文件夹前置解释7-zip 下载地址7-zip 安装文件解释7-zip 命令解释与集成压缩命令解压命令7-zip 命令行调用方式7-zip.chm 说明文件翻译 前置解释 js 不是原生JavaScript,我说的这个一般是用来集

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 126,242
精华内容 50,496
关键字:

压缩的文件夹怎么解压