精华内容
下载资源
问答
  • 所有的方法都是对压缩包里的文件进行遍历写出,可以通过添加过滤对指定文件进行解压。 首先是依赖: <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-compress&...

    所有的方法都是对压缩包里的文件进行遍历写出,可以通过添加过滤对指定文件进行解压。
    首先是依赖:

    <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-compress</artifactId>
        <version>1.18<version>
    </dependency>
    
    <-- 解压rar所需的依赖 -->
    <dependency>
        <groupId>com.github.junrar</groupId>
        <artifactId>junrar</artifactId>
        <version>4.0.0<version>
    </dependency>
    

    zip包的解压方法:

    public static List<String> unPackZip(File zipFile, String unpackFolder) {
        List<String> fileNames = new ArrayList<>();
        String fileEncoding = null;
        try {
            fileEncoding = checkEncoding(zipFile);
        } catch (IOException e1) {
            e1.printStackTrace();
        }
        String fileEncoding1 = (fileEncoding != null) ? fileEncoding : "UTF-8";
        try (ZipArchiveInputStream zais = new ZipArchiveInputStream(new BufferedInputStream(new FileInputStream(zipFile), 4096), fileEncoding1)) {
            ZipArchiveEntry entry = null;
            while ((entry = zais.getNextZipEntry()) != null) {
                //遍历压缩包,如果进行有选择解压,可在此处进行过滤
                File tmpFile = new File(unpackFolder, entry.getName());
                if (entry.isDirectory()) {
                    tmpFile.mkdirs();
                } else {
                    fileNames.add(entry.getName());
                    File file = new File(tmpFile.getAbsolutePath());
                    if (!file.exists()) {
                        if (!file.getParentFile().exists()) {
                            file.getParentFile().mkdirs();
                        }
                    }
                    try (OutputStream os = new BufferedOutputStream(new FileOutputStream(tmpFile), 4096)) {
                        IOUtils.copy(zais, os);
                    }
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return fileNames;
    }
    
    //判断字符编码
    private static String checkEncoding(File file) throws IOException {
        InputStream in = new FileInputStream(file);
        byte[] b = new byte[3];
        try {
            int i = in.read(b);
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            in.close();
        }
        if (b[0] == -1 && b[1] == -2) {
            return "UTF-16";
        } else if (b[0] == -2 && b[1] == -1) {
            return "Unicode";
        } else if (b[0] == -17 && b[1] == -69 && b[2] == -65) {
            return "UTF-8";
        } else {
            return "GBK";
        }
    }
    

    rar包的解压方法:

    public static List<String> unPackRar(File rarFileName, String unpackFolder) {
        List<String> fileNames = new ArrayList<>();
        try (Archive a = new Archive(new FileInputStream(rarFileName))) {
            FileHeader fh = a.nextFileHeader();
            while (fh != null) {
                //遍历压缩包,如果进行有选择解压,可在此处进行过滤
                File file;
                if (existZH(fh.getFileNameW())) {
                    file = new File(unpackFolder + File.separator + fh.getFileNameW());
                } else {
                    file = new File(unpackFolder + File.separator + fh.getFileNameString());
                }
                if (fh.isDirectory()) {
                    file.mkdirs();
                } else {
                    String absolutePath = file.getAbsolutePath();
                    if (absolutePath.contains("\\")) {
                        file = new File(absolutePath.replace("\\", File.separator));
                    }
                    if (!file.exists()) {
                        // 相对路径可能多级,可能需要创建父目录.
                        if (!file.getParentFile().exists()) {
                            file.getParentFile().mkdirs();
                        }
                        if (!file.createNewFile()) {
                        }
                    }
                    try (FileOutputStream os = new FileOutputStream(file)) {
                        a.extractFile(fh, os);
                    }
                    fileNames.add(file.getName());
                }
                fh = a.nextFileHeader();
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return fileNames;
    }
    
    public static boolean existZH(String str) {
        //是否存在中文的正则表达式
        String regEx = "[\\u4e00-\\u9fa5]";
        Pattern p = Pattern.compile(regEx);
        Matcher m = p.matcher(str);
        return m.find();
    }
    

    tar包的解压方法:

    public static List<String> unPackTar(File file,  String unpackFolder) throws IOException {
        List<String> fileNames = new ArrayList<>();
        try (FileInputStream inputStream = new FileInputStream(file);
             TarArchiveInputStream iStream = new TarArchiveInputStream(inputStream);
             BufferedInputStream bis = new BufferedInputStream(iStream);) {
            TarArchiveEntry entry = iStream.getNextTarEntry();
            while (entry != null) {
                //遍历压缩包,如果进行有选择解压,可在此处进行过滤
                File unpackFolderFile = new File(unpackFolder);
                File tmpFile = new File(unpackFolder, entry.getName());
                if (!unpackFolderFile.exists()) {
                    unpackFolderFile.mkdirs();
                }
                if (entry.isDirectory()) {
                    tmpFile.mkdirs();
                } else {
                    fileNames.add(entry.getName());
                    try (OutputStream out = new FileOutputStream(tmpFile)) {
                        int length ;
                        byte[] b = new byte[2048];
                        while ((length = bis.read(b)) != -1) {
                            out.write(b, 0, length);
                        }
                        out.flush();
                    }
                }
                entry = (TarArchiveEntry) iStream.getNextEntry();
            }
        }
        return fileNames;
    }
    

    tar.gz包的解压方法:

    public static List<String> unPackTarGz(File file, final String unpackFolder)
                throws IOException, ArchiveException {
        List<String> fileNames = new ArrayList<>();
        try (FileInputStream fileInputStream = new FileInputStream(file);
             GZIPInputStream iStream = new GZIPInputStream(fileInputStream);
             ArchiveInputStream in = new ArchiveStreamFactory().createArchiveInputStream("tar", iStream);
             BufferedInputStream bis = new BufferedInputStream(in)) {
            TarArchiveEntry entry;
            while ((entry = (TarArchiveEntry) in.getNextEntry()) != null) {
                //遍历压缩包,如果进行有选择解压,可在此处进行过滤
                File unpackFolderFile = new File(unpackFolder);
                if (!unpackFolderFile.exists()) {
                    unpackFolderFile.mkdirs();
                }
                if (entry.getName().contains(".tar")) {
                    unPackTar(file, unpackFolder);
                    break;
                }
                File tmpFile = new File(unpackFolder, entry.getName());
                if (!unpackFolderFile.exists()) {
                    unpackFolderFile.mkdirs();
                }
                if (entry.isDirectory()) {
                    tmpFile.mkdirs();
                } else {
                    fileNames.add(entry.getName());
                    try (OutputStream out = new FileOutputStream(tmpFile)) {
                        int length;
                        byte[] b = new byte[2048];
                        while ((length = bis.read(b)) != -1) {
                            out.write(b, 0, length);
                        }
                        out.flush();
                    }
                }
            }
        }
        return fileNames;
    }
    
    展开全文
  • shell脚本根据不同的压缩包类型(rar和zip)分别进行解压,注意传参: case $1 in *.zip) unzip -qq $1 -d $Temp_Dir;; *.rar) unrar x $1 $Temp_Dir;; *) exit 1;; esac 再次压缩的命令: ra

    shell脚本根据不同的压缩包类型(rar和zip)分别进行解压,注意传参:

            case $1 in
                    *.zip)
                    unzip -qq $1 -d $Temp_Dir;;
                    *.rar)
                    unrar x $1 $Temp_Dir;;
                    *)
                    exit 1;;
            esac
    

    再次压缩的命令:

    rar a /data/test.rar test
    zip -r /data/test.rar .
    
    展开全文
  • 使用shell写的解压zip压缩包的脚本,可对有规律的文件进行循环解压
  • Linux上经常需要处理各种类型压缩包的解包和打包处理。通常来说会处理最常见的.tar包和.tar.gz包就能解决大部分问题了,但是真碰到其他类型压缩包还是需要知道如何进行解压缩。这里对Linux上常见类型压缩包处理...

      Linux上经常需要处理各种类型压缩包的解包和打包处理。通常来说会处理最常见的.tar包和.tar.gz包就能解决大部分问题了,但是真碰到其他类型的压缩包还是需要知道如何进行解压缩。这里对Linux上常见类型的压缩包处理方法进行描述。

    .tar包

    tar -cvf package.tar dir1 #打包
    tar -xvf package.tar #解包

    .tar.gz包

    tar -zcvf package.tar.gz dir1 #打包
    tar -zxvf package.tar.gz #解包

    .gz包

    gunzip package.gz #解压
    gzip -d package.gz #解压
    gzip package.gz dir1  #打包

    .tgz包

    tar -zxvf package.tgz #解包

      说明:.tgz包就是.tar.gz包的缩写。

    .zip包

    unzip package.zip #解包
    zip package.zip dir1 #打包

    .rar包

    unrar x package.rar #保留原路径解压,常用
    unrar e package.rar #解压所有文件到当前目录
    rar a package.rar dir1 #打包,不常用

    .Z包

    uncompress package.Z #解包
    compress package.Z dir1 #打包

      说明:.Z包在以前IBM服务器上常见,Linux上比较少用了。

    .tar.Z包

    tar Zxvf package.tar.Z #解包
    tar Zcvf package.tar.Z dir1 #打包

     

    转载于:https://www.cnblogs.com/linyfeng/p/8776092.html

    展开全文
  • python创建和读取压缩包(zip类型)

    千次阅读 2020-03-11 23:27:11
    读取压缩包内文件 zipfile().ZipFile(), .namelist() import zipfile with zipfile.ZipFile('Desktop.zip','r') as zipobj: print(zipobj.namelist()) 最好不要有中文,否则容易出乱码 处理压缩包里的...

    读取压缩包内文件

    zipfile().ZipFile(), .namelist()

    import zipfile
    
    with zipfile.ZipFile('Desktop.zip','r') as zipobj:
    	print(zipobj.namelist())

    最好不要有中文,否则容易出乱码

     

    处理压缩包里的中文

    .encode('cp437').decode('gbk')

    import zipfile
    
    with zipfile.ZipFile('Desktop.zip','r') as zipobj:
    	for filename in zipobj.namelist():
    		print(filename.encode('cp437').decode('gbk'))

     

    读取压缩包内文件信息

    zipobj.getinfo()

    import zipfile
    
    with zipfile.ZipFile('Desktop.zip','r') as zipobj:
    	for file_name in zipobj.namelist():
    		info = zipobj.getinfo(file_name)
    		file_name = file_name.encode('cp437').decode('gbk')
    		print(file_name, info.file_size, info.compress_size)

    .file_size是原始文件大小

    .compress_size是压缩后大小

    输出单位是字节

     

    解压压缩包

    .extractall(path=解压到哪个位置)

    import zipfile
    
    with zipfile.ZipFile('Desktop.zip','r') as zipobj:
    	zipobj.extractall('./Desktop/')

    解决中文乱码

    解压完了后重写文件名

    import os
    import zipfile
    
    filePath = 'Desktop.zip'
    release_file_dir = 'D:/py/Desktop/'
    
    zip_file_contents = zipfile.ZipFile(filePath, 'r')
    zip_file_contents.extractall(release_file_dir)#解压缩ZIP文件
    for file in zip_file_contents.namelist():
        filename = file.encode('cp437').decode('gbk')#先使用cp437编码,然后再使用gbk解码
        print(filename)
        os.chdir(release_file_dir)#切换到目标目录
        os.rename(file,filename)#重命名文件

     

    创建压缩包

    zipobj.write(要压缩成的文件名)

    import zipfile
    
    file_list = ['mnist_backward.py', 'mnist_forward.py','AJUN水印.jpg']
    with zipfile.ZipFile('py.zip','w') as zipobj:
    	for file in file_list:
    		zipobj.write(file)

     

    向已有的压缩包里添加文件

    zipobj.write(待添加的文件名)

    import zipfile
    
    with zipfile.ZipFile('py.zip','a') as zipobj:
    	zipobj.write('my.png')

    展开全文
  • 如题,MNIST数据集,PNG格式图片
  • <el-button type="primary" size="small" @click="download">下载</el-button> import { fileDownload } from '@/api/policy' //文件清单表格——文件下载 download(fileName) { ...
  • 相信大家在开发项目时,有遇到过需要支持解压缩所有类型压缩包的需求(起码大部分常用压缩包),本代码利用了python作为开发语言所写的一个解压缩包脚本,支持对绝大多数的压缩包解压操作,有需要的可以下下来试试...
  • 几种常用的压缩包

    千次阅读 2013-12-27 17:51:56
     很老的压缩包类型,但不利于跨平台,刚刚在windows上把文件压成zip格式传到linux就乱码了 2. rar  在linux上解压需要安装 unrar,其源为rpmforge,在此再次详述rpm的下载及需要的软件安装: 1.在网页上输入...
  • 1.验证上传文件的类型: (1)验证图片类型 (2)验证压缩包 (3)验证.txt文件 2.回车提交内容 原生的input,使用 @keyup.enter就可以,但使用element-ui,则要加上n...
  • 背景:在公司某个平台链接下载后,是一堆带有文件带有后缀的文件,要进行切割,判断是那个类型的包及相应的处理。 #!/bin/bash # ******************************************************************************...
  • JS判断上传文件的大小类型等限制

    热门讨论 2011-03-04 16:46:13
    JS判断上传文件的大小类型等限制,配合JSp再上传文件的时候会及时向用户反馈文件是否满足要求,比如说大小和格式限制
  • tar.gz 文件类型 以·tar.gz为扩展名的是一种压缩文件,在Linux和OSX下常见,Linux和OSX都可以直接解压使用这种压缩文件。 .tar.gz一般情况下都是源代码的安装包,需要先解压再经过编译、安装.才能执行。总而言之...
  •  在用python解压缩包的时候,有两种方法,一种是根据不同的压缩包类型,调python中不同的库。比如说解压zip类型压缩包,需要用到unzip,解压tar类型压缩包,又需要调用其他的库,这样做不好。另外一种方法是下载一...
  • accept限制上传文件类型 < input type=“file” accept="" /> accept的值为: 格式 accept类型 *.3gpp audio/3gpp, video/3gpp *.ac3 audio/ac3 *.asf allpication/vnd.ms-asf *.au audio/basic...
  • fckeditor压缩包

    2018-09-05 12:49:28
    fckeditor用于需要编写功能,比如博客的文字类型和格式
  • 压缩包密码破解

    2019-02-18 18:07:55
    1.支持以下类型文件:ZIP,RAR(包括V3.X,SFX技术,多卷档案加密文件名)和ACE档案。  2.其界面简洁,使用方便。  3.可设定优先级,支持在后台运行自动破解,可自定义破解字典,支持换肤!  2.其界面简洁,...
  • redis实战压缩包

    2017-11-08 08:40:12
    本书深入浅出地介绍了Redis的5种数据类型,并通过多个实用示例展示了Redis的用法。除此之外,书中还讲述了Redis的优化方法以及扩展方法,是一本对于学习和使用 Redis 来说不可多得的参考书籍。 本书一共由三个部分...
  • 判断压缩文件的类型。我用了ContentType,输出他的ContentType为null。用文件头判断只有rar和zip,不全面。 还有什么方法能判断出他的类型呢?要准确,还能判断出各种压缩文件类型
  • 3.2版本jmeter,需安装java环境,解压即用。组件根据具体需要,自行下载-本包只有部分jar功能
  • vim配置文件压缩包

    2018-11-12 15:27:34
    filetype on "启用文件类型侦测 filetype plugin on "针对不同的文件类型加载对应的插件 filetype plugin indent on "启用缩进 set smartindent "启用智能对齐方式 set expandtab "将Tab键转换为空格 set tabstop=4 ...
  • 程序为 batch_unzip.py,用了os, pathlib, sys, glob, shutil 等库,解压指定文件夹下所有 zip 类型压缩包。提供两种解压方式,一种是先为每个压缩文件创建同名的目录,然后解压到新建的目录中;第二种是直接解压到...
  • 暴力破解的压缩包密码,将攻击类型设置成 “ 暴力 ”,在左边可以设置暴力破解的范围,比如所以 “ 0-9 ” 的组合数字,除了数字还可以选择字母、符号等。
  • PPT模板压缩包.rar

    2015-11-22 09:58:22
    关于PPT模板。小清新类型,使用方便。画风优美种类丰富。对于风景介绍类的PPT可应用为模板。
  • MISC-zip压缩包的总结

    千次阅读 多人点赞 2019-07-16 16:29:08
    MISC-zip压缩包的总结 做了那么多的MISC压缩包的CTF题,是时候总结一下经验了。手撕压缩包走起! 1、伪加密 zip中有一位是标记文件是否加密的,如果更改一个未加密zip包的加密标记位,那么在打开压缩包时就会提示该...
  • Windows环境下搭建http类型的web服务器,将该压缩包直接解压后运行"酷源码(www.kyuanma.com)ASP调试工具.exe"即可。
  • 首先需要安装命令 zip unzip yum -y zip unzip 安装完毕,直接 unzip zip类型压缩包 好了,就这????‍♂️
  • nacos-server-1.2.1两个压缩包的版本都有,Windows和Linux版本的 - **服务限流降级**:默认支持 WebServlet、WebFlux, OpenFeign、RestTemplate、Spring Cloud Gateway, Zuul, Dubbo 和 RocketMQ 限流降级功能的...
  • 详解Python 解压缩文件

    2020-12-31 17:12:08
    1>file压缩包名称; 2>mode:读’r’或者写’w’模式; 3>compression:设置压缩格式; 4>compresslevel:压缩等级; 压缩格式分类: 1.2 添加压缩文件 zipobj.write(self, filename, arcname=None, compress_type=...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 73,690
精华内容 29,476
关键字:

压缩包类型