精华内容
下载资源
问答
  • Android zip、tar+gz 压缩解压

    千次阅读 2019-05-06 11:18:23
    import androidx.annotation.Size; import org.apache.commons.compress.archivers.tar.TarArchiveEntry; import org.apache.commons.compress.archivers.tar.TarArchiveInputStream; impo...
    package com.tool.util;
    
    import androidx.annotation.Size;
    
    import org.apache.commons.compress.archivers.tar.TarArchiveEntry;
    import org.apache.commons.compress.archivers.tar.TarArchiveInputStream;
    import org.apache.commons.compress.archivers.tar.TarArchiveOutputStream;
    import org.apache.commons.compress.compressors.gzip.GzipCompressorInputStream;
    
    import java.io.ByteArrayInputStream;
    import java.io.ByteArrayOutputStream;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.InputStream;
    import java.util.Arrays;
    import java.util.Enumeration;
    import java.util.zip.CRC32;
    import java.util.zip.CheckedOutputStream;
    import java.util.zip.GZIPInputStream;
    import java.util.zip.GZIPOutputStream;
    import java.util.zip.ZipEntry;
    import java.util.zip.ZipFile;
    import java.util.zip.ZipInputStream;
    import java.util.zip.ZipOutputStream;
    
    /**
     * 压缩工具类。
     * zip是将文件打包为zip格式的压缩文件。
     * gzip是将文件打包为tar.gz格式的压缩文件。
     * gzip只能对一个文件进行压缩,如果想压缩一大堆文件,就需要使用tar进行打包了。
     */
    public class CompressUtil {
    
        private static final byte[] ZIP_HEADER_1 = new byte[]{0x1F, (byte) 0x8B, 0x03, 0x04};
        private static final byte[] ZIP_HEADER_2 = new byte[]{0x1F, (byte) 0x8B, 0x05, 0x06};
        private static final int BUFF_SIZE = 1024;
    
        /**
         * 判断文件是否压缩
         */
        public static boolean isCompressed(@Size(4) byte[] data) {
            if (data == null || data.length < ZIP_HEADER_1.length) return false;
            byte[] header = Arrays.copyOf(data, ZIP_HEADER_1.length);
            return Arrays.equals(header, ZIP_HEADER_1) || Arrays.equals(header, ZIP_HEADER_2);
        }
    
        public static byte[] zip(byte[] data) {
            ByteArrayOutputStream baos = new ByteArrayOutputStream();
            ZipOutputStream zip = new ZipOutputStream(baos);
            byte[] result = null;
            try {
                String name = FileUtil.genNameByDate();
                zip.putNextEntry(new ZipEntry(name));
                zip.write(data);
                zip.closeEntry();
                zip.flush();
                result = baos.toByteArray();
            } catch (IOException e) {
                e.printStackTrace();
            } finally {
                try {
                    zip.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            return result;
        }
    
        public static byte[] unzip(byte[] data) {
            byte[] buffer = new byte[BUFF_SIZE];
            int len;
            ByteArrayOutputStream baos = new ByteArrayOutputStream();
            ByteArrayInputStream bais = new ByteArrayInputStream(data);
            ZipInputStream unzip = new ZipInputStream(bais);
            byte[] result = null;
            try {
                //这里的getNextEntry实际上是从byte数组里面读一段,如果没写这句,则后续解析失败
                ZipEntry zipEntry = unzip.getNextEntry();
                while ((len = unzip.read(buffer)) != -1) {
                    baos.write(buffer, 0, len);
                }
                result = baos.toByteArray();
            } catch (IOException e) {
                e.printStackTrace();
            } finally {
                try {
                    unzip.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            return result;
        }
    
        public static byte[] gzip(byte[] data) {
            ByteArrayOutputStream baos = new ByteArrayOutputStream();
            GZIPOutputStream gzip = null;
            byte[] result = null;
            try {
                gzip = new GZIPOutputStream(baos);
                gzip.write(data);
                gzip.flush();
                //gzip这里有点问题,必须close之后再取数据,否则有遗漏
                gzip.close();
                gzip = null;
                result = baos.toByteArray();
            } catch (IOException e) {
                e.printStackTrace();
            } finally {
                try {
                    if (gzip != null) gzip.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            return result;
        }
    
        public static byte[] ungzip(byte[] data) {
            byte[] buffer = new byte[BUFF_SIZE];
            int len;
            ByteArrayOutputStream baos = new ByteArrayOutputStream();
            ByteArrayInputStream bais = new ByteArrayInputStream(data);
            byte[] result = null;
            GZIPInputStream ungzip = null;
            try {
                ungzip = new GZIPInputStream(bais);
                while ((len = ungzip.read(buffer)) != -1) {
                    baos.write(buffer, 0, len);
                }
                result = baos.toByteArray();
            } catch (IOException e) {
                e.printStackTrace();
            } finally {
                try {
                    if (ungzip != null) ungzip.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            return result;
        }
    
        /**
         * ZIP压缩
         *
         * @param file    待压缩的文件或文件夹
         * @param zos     压缩流
         * @param baseDir 相对压缩文件的相对路径
         */
        private static void zip(File file, ZipOutputStream zos, String baseDir) {
            if (file.isDirectory()) {
                File[] files = file.listFiles();
                for (File f : files) {
                    zip(f, zos, baseDir + file.getName() + File.separator);
                }
            } else if (file.isFile()) {
                FileInputStream fis = null;
                try {
                    fis = new FileInputStream(file);
                    ZipEntry zipEntry = new ZipEntry(baseDir + file.getName());
                    zos.putNextEntry(zipEntry);
                    int len;
                    byte[] buffer = new byte[BUFF_SIZE];
                    while ((len = fis.read(buffer)) != -1) {
                        zos.write(buffer, 0, len);
                    }
                    zos.closeEntry();
                } catch (FileNotFoundException e) {
                    e.printStackTrace();
                } catch (IOException e) {
                    e.printStackTrace();
                } finally {
                    try {
                        if (fis != null) fis.close();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
            }
        }
    
        /**
         * Zip压缩
         *
         * @param srcFile 待压缩的文件或文件夹
         * @param dstDir  压缩至该目录,保持原文件名,后缀改为zip
         */
        public static void zip(File srcFile, String dstDir) {
            File file = new File(dstDir);
            //需要判断该文件存在,且是文件夹
            if (!file.exists() || !file.isDirectory()) file.mkdirs();
    
            String dstPath = dstDir + File.separator + srcFile.getName() + ".zip";
            FileOutputStream fos = null;
            CheckedOutputStream cos = null;
            ZipOutputStream zos = null;
            try {
                fos = new FileOutputStream(dstPath);
                cos = new CheckedOutputStream(fos, new CRC32());
                zos = new ZipOutputStream(cos);
                zip(srcFile, zos, "");
                zos.flush();
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            } finally {
                try {
                    //关闭数据流的时候要先关闭外层,否则会报Stream Closed的错误
                    if (zos != null) zos.close();
                    if (cos != null) cos.close();
                    if (fos != null) fos.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    
        /**
         * 解压
         *
         * @param srcFile 待解压的文件
         * @param dstDir  解压到该目录,生成一个与原文件名相同的文件或文件夹
         */
        public static void unzip(File srcFile, String dstDir) {
            File file = new File(dstDir);
            //需要判断该文件存在,且是文件夹
            if (!file.exists() || !file.isDirectory()) file.mkdirs();
            ZipFile zipFile = null;
            FileOutputStream fos = null;
            InputStream is = null;
            try {
                //默认编码方式为UTF8
                zipFile = new ZipFile(srcFile);
                Enumeration<? extends ZipEntry> zipEntrys = zipFile.entries();
                byte[] buffer = new byte[BUFF_SIZE];
                int len = 0;
                while (zipEntrys.hasMoreElements()) {
                    ZipEntry zipEntry = zipEntrys.nextElement();
                    String fileName = dstDir + File.separator + zipEntry.getName();
                    File tmpFile = new File(fileName);
                    File parent = tmpFile.getParentFile();
                    if (!parent.exists()) parent.mkdirs();
                    if (zipEntry.isDirectory()) {
                        if (!tmpFile.exists()) tmpFile.mkdirs();
                    } else {
                        fos = new FileOutputStream(tmpFile);
                        is = zipFile.getInputStream(zipEntry);
                        while ((len = is.read(buffer)) != -1) {
                            fos.write(buffer, 0, len);
                        }
                        is.close();
                        is = null;
                        fos.flush();
                        fos.close();
                        fos = null;
                    }
                }
            } catch (IOException e) {
                e.printStackTrace();
            } finally {
                try {
                    if (zipFile != null) zipFile.close();
                    if (is != null) is.close();
                    if (fos != null) fos.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    
        /**
         * tar打包,GZip压缩
         *
         * @param file    待压缩的文件或文件夹
         * @param taos    压缩流
         * @param baseDir 相对压缩文件的相对路径
         */
        private static void tarGZip(File file, TarArchiveOutputStream taos, String baseDir) {
            if (file.isDirectory()) {
                File[] files = file.listFiles();
                for (File f : files) {
                    tarGZip(f, taos, baseDir + file.getName() + File.separator);
                }
            } else {
                byte[] buffer = new byte[BUFF_SIZE];
                int len = 0;
                FileInputStream fis = null;
                TarArchiveEntry tarArchiveEntry = null;
                try {
                    fis = new FileInputStream(file);
                    tarArchiveEntry = new TarArchiveEntry(baseDir + file.getName());
                    tarArchiveEntry.setSize(file.length());
                    taos.putArchiveEntry(tarArchiveEntry);
                    while ((len = fis.read(buffer)) != -1) {
                        taos.write(buffer, 0, len);
                    }
                    taos.flush();
                } catch (FileNotFoundException e) {
                    e.printStackTrace();
                } catch (IOException e) {
                    e.printStackTrace();
                } finally {
                    try {
                        if (fis != null) fis.close();
                        if (tarArchiveEntry != null) taos.closeArchiveEntry();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
            }
        }
    
        /**
         * tar打包,GZip压缩
         *
         * @param srcFile 待压缩的文件或文件夹
         * @param dstDir  压缩至该目录,保持原文件名,后缀改为zip
         */
        public static void tarGZip(File srcFile, String dstDir) {
            File file = new File(dstDir);
            //需要判断该文件存在,且是文件夹
            if (!file.exists() || !file.isDirectory()) file.mkdirs();
            //先打包成tar格式
            String dstTarPath = dstDir + File.separator + srcFile.getName() + ".tar";
            String dstPath = dstTarPath + ".gz";
    
            FileOutputStream fos = null;
            TarArchiveOutputStream taos = null;
            try {
                fos = new FileOutputStream(dstTarPath);
                taos = new TarArchiveOutputStream(fos);
                tarGZip(srcFile, taos, "");
                taos.flush();
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            } finally {
                try {
                    //关闭数据流的时候要先关闭外层,否则会报Stream Closed的错误
                    if (taos != null) taos.close();
                    if (fos != null) fos.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
    
            File tarFile = new File(dstTarPath);
            fos = null;
            GZIPOutputStream gzip = null;
            FileInputStream fis = null;
            try {
                //再压缩成gz格式
                fos = new FileOutputStream(dstPath);
                gzip = new GZIPOutputStream(fos);
                fis = new FileInputStream(tarFile);
                int len = 0;
                byte[] buffer = new byte[BUFF_SIZE];
                while ((len = fis.read(buffer)) != -1) {
                    gzip.write(buffer, 0, len);
                }
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            } finally {
                try {
                    if (fis != null) fis.close();
                    //关闭数据流的时候要先关闭外层,否则会报Stream Closed的错误
                    if (gzip != null) gzip.close();
                    if (fos != null) fos.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
    
            //删除生成的tar临时文件
            if (tarFile.exists()) tarFile.delete();
        }
    
        /**
         * GZip解压,tar解包
         *
         * @param srcFile 待压缩的文件或文件夹
         * @param dstDir  压缩至该目录,保持原文件名,后缀改为zip
         */
        public static void untarGZip(File srcFile, String dstDir) {
            File file = new File(dstDir);
            //需要判断该文件存在,且是文件夹
            if (!file.exists() || !file.isDirectory()) file.mkdirs();
            byte[] buffer = new byte[BUFF_SIZE];
            FileInputStream fis = null;
            GzipCompressorInputStream gcis = null;
            TarArchiveInputStream tais = null;
            try {
                fis = new FileInputStream(srcFile);
                gcis = new GzipCompressorInputStream(fis);
                tais = new TarArchiveInputStream(gcis);
                TarArchiveEntry tarArchiveEntry;
                int len = 0;
                while ((tarArchiveEntry = tais.getNextTarEntry()) != null) {
                    File f = new File(dstDir + File.separator + tarArchiveEntry.getName());
                    if (tarArchiveEntry.isDirectory()) f.mkdirs();
                    else {
                        File parent = f.getParentFile();
                        if (!parent.exists()) parent.mkdirs();
                        FileOutputStream fos = new FileOutputStream(f);
                        while ((len = tais.read(buffer)) != -1) {
                            fos.write(buffer, 0, len);
                        }
                        fos.flush();
                        fos.close();
                    }
                }
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            } finally {
                try {
                    if(fis != null) fis.close();
                    //关闭数据流的时候要先关闭外层,否则会报Stream Closed的错误
                    if(tais != null) tais.close();
                    if(gcis != null) gcis.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }
    

    在module的build.gradle中添加如下依赖

    dependencies {
    	……
    	//提供tar+gzip的打包方式(TarArchive和GZipCompress)
    	//http://commons.apache.org/proper/commons-compress/download_compress.cgi
    	implementation 'org.apache.commons:commons-compress:1.18'
    }
    

    JUnit 测试如下(注意:文件路径需要改成自己的)

    	@Test
        public void compress() {
            assertTrue(ZipOutputStream.class == getDelater());
    
            byte[] data = randomBytes(65535);
            byte[] zipData = CompressUtil.zip(data);
            byte[] unzipData = CompressUtil.unzip(zipData);
            assertArrayEquals(data, unzipData);
    
            byte[] gzipData = CompressUtil.gzip(data);
            byte[] ungzipData = CompressUtil.ungzip(gzipData);
            assertArrayEquals(data, ungzipData);
    
            String dir = "D:\\test";
            String path = "D:\\test\\Test Folder";
            String target = "D:\\test\\A\\B";
            CompressUtil.zip(new File(path), dir);
            CompressUtil.unzip(new File(path + ".zip"), target);
    
            CompressUtil.tarGZip(new File(path), dir);
            CompressUtil.untarGZip(new File(path + ".tar.gz"), target);
        }
    
    展开全文
  • Android中zip,tar.gz压缩与解压缩

    万次阅读 2016-06-27 13:17:11
    项目中有这样的需求,在导出的时候需要导出压缩包,导入的时候需要解...一个commons-compress-1.5是tar和gz支持的包 一起打包提供下载地址 压缩jar包提供一个类,需要的自己增减。压缩进度可用,因为是用原始文件

    项目中有这样的需求,在导出的时候需要导出压缩包,导入的时候需要解压缩包。网上看到不少代码都有不少缺陷,要不zip不支持中文,要不不支持压缩到任意目录,修改了下发上了。亲测亲改可用
    需要两个jar包,一个ZipEntry.jar让zip压缩支持中文
    一个commons-compress-1.5是tar和gz支持的包
    一起打包提供下载地址 压缩jar包

    后面的tar.gz实际是先打了tar包然后做的gz压缩,所以单独的tar包或者gz压缩解压缩,去掉一部分代码即可

    /**
         * 递归zip压缩一个文件夹中所有的文件
         * zip压缩
         */
        private static void compress(File file, com.file.zip.ZipOutputStream out, String basedir)
        {
        /* 判断是目录还是文件 */
            if (file.isDirectory())
            {
                compressDirectory(file, out, basedir);
            }
            else
            {
                compressFile(file, out, basedir);
            }
        }
    
        /** 压缩一个目录 */
        private static void compressDirectory(File dir, com.file.zip.ZipOutputStream out, String basedir)
        {
            if (!dir.exists()) return;
    
            File[] files = dir.listFiles();
            for (int i = 0; i < files.length; i++) {
                compress(files[i], out, basedir + dir.getName() + "/");
            }
        }
    
        /** 压缩一个文件 */
        private static void compressFile(File file, com.file.zip.ZipOutputStream out, String basedir)
        {
            if (!file.exists()) {
                return;
            }
            try {
                BufferedInputStream bis = new BufferedInputStream(new FileInputStream(file));
                com.file.zip.ZipEntry entry = new com.file.zip.ZipEntry(basedir + file.getName());
                out.putNextEntry(entry);
                int count;
                byte data[] = new byte[1024];
                while ((count = bis.read(data)) != -1)
                {
                    out.write(data, 0, count);
                }
                bis.close();
            }
            catch (Exception e) {
                throw new RuntimeException(e);
            }
        }
    
        public static void zip(String srcPathName, String zipFileName)
        {
            File file = new File(srcPathName);
            File zipFile = new File(zipFileName);
            if (!file.exists()) throw new RuntimeException(srcPathName + "不存在!");
            try
            {
                FileOutputStream fileOutputStream = new FileOutputStream(zipFile);
                CheckedOutputStream cos = new CheckedOutputStream(fileOutputStream, new CRC32());
                com.file.zip.ZipOutputStream out = new com.file.zip.ZipOutputStream(cos);
                out.setEncoding(System.getProperty("sun.jnu.encoding"));//设置文件名编码方式
                String basedir = "";
                compress(file, out, basedir);
                out.close();
            }
            catch (Exception e)
            {
                throw new RuntimeException(e);
            }
        }
    
    /**
         * 解压缩zip工具类
         * @param file 压缩文件
         * @param dir 解压缩*目录*
         * @throws IOException
         */
        public static void unzip(File file, String dir) throws IOException {
    
            //建立目标目录
            File parent = new File(dir);
            if (!parent.exists()){
                parent.mkdirs();
            }
            ZipFile zipFile = new ZipFile(file, "GBK");//设置压缩文件的编码方式为GBK
    
            Enumeration<ZipEntry> entris = zipFile.getEntries();
            ZipEntry zipEntry = null;
            File tmpFile = null;
            BufferedOutputStream bos = null;
            InputStream is = null;
            byte[] buf = new byte[1024];
            int len = 0;
            while (entris.hasMoreElements()) {
                zipEntry = entris.nextElement();
    
                tmpFile = new File(dir + zipEntry.getName());
                File father = new File(tmpFile.getParent());
                if (!father.exists()){
                    father.mkdirs();
                }
                if (zipEntry.isDirectory()) {//当前文件为目录
                    if (!tmpFile.exists()) {
                        tmpFile.mkdir();
                    }
                } else {
                    if (!tmpFile.exists()) {
                        tmpFile.createNewFile();
                    }
    
                    is = zipFile.getInputStream(zipEntry);
    
                    bos = new BufferedOutputStream(new FileOutputStream(tmpFile));
                    while ((len = is.read(buf)) > 0) {
                        bos.write(buf, 0, len);
                    }
                    bos.flush();
                    bos.close();
                }
            }
    /**
         * 压缩tar.gz包
         * @param files    文件
         * @param destPath 目的路径
         */
        public void doTarGZ(File[] files, String destPath)
                throws IOException {
            /*
             * 定义一个TarArchiveOutputStream 对象
             */
            File tarFile = new File(destPath);
            FileOutputStream fos = new FileOutputStream(tarFile);
            BufferedOutputStream bos = new BufferedOutputStream(fos);
            TarArchiveOutputStream taos = new TarArchiveOutputStream(bos);
            byte[] buf = new byte[1024];
            for (File child : files) {
                if (child.isFile()) { // 文件
                    FileInputStream fis = new FileInputStream(child);
                    BufferedInputStream bis = new BufferedInputStream(fis);
                    TarArchiveEntry tae = new TarArchiveEntry(child.getName());
                    tae.setSize(child.length());
                    taos.putArchiveEntry(tae);
                    int len;
                    while ((len = bis.read(buf)) > 0) {
                        taos.write(buf, 0, len);
                    }
                    bis.close();
                    taos.flush();
                    taos.closeArchiveEntry();
                    continue;
                }
            }
            //建立压缩文件输出流
            FileOutputStream gzFile = new FileOutputStream(destPath + ".gz");
            //建立gzip压缩输出流
            GZIPOutputStream gzout = new GZIPOutputStream(gzFile);
            //打开需压缩文件作为文件输入流
            File file = new File(destPath);
            FileInputStream tarin = new FileInputStream(file);
            int len;
            while ((len = tarin.read(buf)) != -1) {
                gzout.write(buf, 0, len);
            }
            gzout.close();
            gzFile.close();
            tarin.close();
            //删除tar包保留tar.gz
            file.delete();
        }
    /**
    *tar.gz解压缩
    */
    public static void doUnTarGz(File srcfile, String destpath)
                throws IOException {
            byte[] buf = new byte[1024];
            FileInputStream fis = new FileInputStream(srcfile);
            BufferedInputStream bis = new BufferedInputStream(fis);
            GzipCompressorInputStream cis = new GzipCompressorInputStream(bis);
            TarArchiveInputStream tais = new TarArchiveInputStream(cis);
            TarArchiveEntry tae = null;
            int pro = 0;
            while ((tae = tais.getNextTarEntry()) != null) {
                File f = new File(destpath + "/" + tae.getName());
                if (tae.isDirectory()) {
                    f.mkdirs();
                } else {
                    /*
                     * 父目录不存在则创建
                     */
                    File parent = f.getParentFile();
                    if (!parent.exists()) {
                        parent.mkdirs();
                    }
    
                    FileOutputStream fos = new FileOutputStream(f);
                    BufferedOutputStream bos = new BufferedOutputStream(fos);
                    int len;
                    while ((len = tais.read(buf)) != -1) {
                        bos.write(buf, 0, len);
                    }
                    bos.flush();
                    bos.close();
                }
            }
            tais.close();
        }
    展开全文
  • python解压gz

    千次阅读 2020-12-02 16:01:43
    广告关闭云服务器1核2G首年99年,还有多款热门云产品满足您的上云需求执行程序,会在当前目录下生成aa.tar.gz文件二、解压defuntar(fname,dirs):解压tar.gz文件:paramfname:压缩文件名:paramdirs:解压后的存放路径:...

    广告关闭

    云服务器1核2G首年99年,还有多款热门云产品满足您的上云需求

    执行程序,会在当前目录下生成aa.tar.gz文件二、解压defuntar(fname,dirs):解压tar.gz文件:paramfname:压缩文件名:paramdirs:解压后的存放路径:return:booltry:t=tarfile.open(fname)t.extractall(path=dirs)returntrueexceptexceptionase:print(e)returnfalse untar(aa.tar.gz,.)完整代码如下:#! usrbinenvpython3#...

    python -vpython 2. 7.11如果提示不是内部或外部命令, 请现在 windows 环境变量 path 里添加上 python 的绝对路径安装 sdkpip 安装 pipinstall qcloud_cos_v4 源码安装 github 上下载 sdk,解压后如下执行(如果提示 permission deny, 需要有管理员权限)python setup.pyinstall卸载 sdkpip uninstall qcloud_cos_v4...

    压缩复制删除文件基于python语言怎么操作呢,压缩文件有四种格式:zip、rar、tar、tar.gz,在压缩过程中也容易出现很多问题,今天小编通过代码给大家详解,具体内容如下所示:一、python3解压文件1.python解压文件代码示例如下代码主要实现zip、rar、tar、tar.gz四种格式的压缩文件的解压def unzip_file(src_file, ...

    遍历文件夹下的所有文件(为了方便,假设只有一层文件夹)for parent, dir_names,file_names in os.walk(person_dir): for file_name in file_names:print file_name解压tar,tar.gz #解压import tarfileimport osdef untar(fname, dirs):t = tarfile.open(fname) t.extractall(path = dirs) if __name__ == __main...

    code tells all:#encoding=utf-8#author:walker#date:2015-10-26#summary:测试gzip压缩解压文件 importgzipbufsize=1024*8defgzipfile(src,dst):fin=open(src,rb)fout=gzip.open(dst,wb)in2out(fin,fout)defgunzipfile(gzfile,dst)fin=gzip.open(gzfile,rb)fout=open(dst,wb)in2out(fin,fout)defin2out(fin,fout)...

    平常我们都是通过安装一些解压缩软件来打开这些不同的压缩文件。 今天我们来谈一谈,如何用python解压几种常见类型的压缩文件。 一、需求描述编写一个python程序,每次下载压缩包形式的文件后,自动将内部文件解压到当前文件夹后将压缩包删除,通过本案例可以学到的知识点:os 模块综合应用glob 模块综合应用利用 ...

    一、需求描述编写一个python程序,每次下载压缩包形式的文件后,自动将内部文件解压到当前文件夹后将压缩包删除,通过本案例可以学到的知识点:os 模块综合应用glob 模块综合应用利用 gzip zipfile rarfile tarfile模块解压文件二、步骤分析和前置知识码代码之前需要将复杂问题解释成多个明确的要求,即这个程序实现...

    我需要提取从ftp站点下载到本地windows文件服务器的gz文件。 我已经为文件的本地路径设置了变量,我知道gzip可以使用它。 我该怎么做? gz文件中的文件是一个xml文件...

    运行如下python程序报错couldnt find path to unrar library的解决办法:#! usrbinpython#-*-coding:utf-8-*-fromunrarimportrarfilefile=rarfile.rarfile(rootssl.rar)file.extractall(tmp)备注rarfile已经通过pip3 install rarfile安装,但是unrar用pip3虽然提示成功但是有问题,所以手动安装下unrar包...

    方法一:用linux命令直接用linux命令,在jupyter中只需要在命令前加一个! 即可。学校服务器上没有装zip,但装了tar, 可以在压缩的时候选择文件压缩为.tar.gz的文件格式。 命令: ! tar -zxvf .language-detector.tar.gz 方法二: 用python的函数模块。 ### 利用zipfile模块来压缩和解压文件...

    本文链接:https:blog.csdn.netweixin_36670529articledetails100123552gzip模块为python的压缩和解压缩模块,读写gzip 文件一、使用gzip模块压缩文件:import gzip #导入python gzip模块,注意名字为全小写g = gzip.gzipfile(filename=, mode=wb, compresslevel=9,fileobj=open(sitemap.log.gz, wb))#filename参数是...

    sourceforge.netprojectsmysql-pythonfilesmysql-python1. 2.3mysql-python-1.2. 3.tar.gz 解压后执行: python27 setup.py build python27 setup.py install 注:此模块不支持python3.4版本。 例:----import os,sys,stringimport mysqldb try:conn = mysqldb.connect(host=127.0.0.1,user=root,passwd=root...

    usrbinpython usrbinpython2.6 usrbinpython.bak usrlibpython2.6usrlib64python2.6 usrincludepython2.6 usrsharemanman1python.1.gz安装依赖yum -y...5# 下载 cd data0software wget https:www.python.orgftppython3.6. 5python-3. 6.5.tar.xz# 解压 tar -xvjf python-3.6. 5.tar.xz# 进入 cd python-3. 6...

    python2版本:python -m simplehttpserverpython3版本:python -m http.serverftp服务器ftp共享需要第三方组件支持,安装命令:pip install pyftpdlib python -m pyftpdlib-p端口号访问方式:ftp:ip:端口。 2、- 解压缩 -这里介绍利用python解压五种压缩文件:gz .tar .zip .rarzipimport zipfile # zipfile压缩z =...

    一、安装编译环境yum install -y gcc zlib zlib-devel python-devel libffi-develpython-setuptools sqlite-devel二、下载python3源码包以及openssl源码包https:www.python.orgftppythonhttps:www.openssl.orgsource三、解压以及编译安装mkdir usrlocalssltar zxvf openssl-1. 1. 0g.tar.gz -c usrlocalssl && cd usr...

    有的 python 库是压缩包形式的,我们要用 pip 在本地安装的话需要首先解压一下: ? 安装方法为 pip + instal + 加压后的文件夹路径: ? 解压后的文件夹路径获取方法。 ?...

    1 安装 python 下载python 2. 7.2 切换到解压目录 .configure --prefix=datapython-2.7. 2 --enable-shared make && make install export ld_library_path=datapython-2. 7.2lib 安装包 setuptools wget http: pypi.python.orgpackagessourcessetuptoolssetuptools-0.6c11.tar.gz#md5=7df2a529a074f613b509fb44feefe...

    rc = 0 hadoop-ha hbase reg admin zookeeper consumers config stormyarn-leader-election brokers controller_epochtime = 6 msec ok! 2) 下载zkpython$ wget https:pypi.python.orgpackagessourcezzkpythonzkpython-0. 4.2.tar.gz 解压安装: $ tar -zxf zkpython-0.4. 2.tar.gzcd zkpython-0. 4. 2$ python2.7 ...

    安装setuptools和pip使用pip安装python模块时出现报错,建议先更新setuptools和pip来排除。 下载地址:https:pypi.python.orgpackagessourcessetuptoolssetuptools-18.4.tar.gz 解压后安装:python setup.py install(或pip install –upgrade setuptools)下载地址:https:pypi.python.orgpackagessourceppippip-7. ...

    usrbinpython2.6 usrbinpython usrlibpython2.6 usrlib64python2.6usrincludepython2.6 usrsharemanman1python.1.gz# python -vpython 2. 7.9现在系统上有...1. 下载python2.7. 9# wget https:www.python.orgftppython2.7. 9python-2. 7.9.tar.xz2. 解压文件tar xvf python-2. 7.9.tar.bz23. 创建安装目录mkdir ...

    展开全文
  • 原标题:linux解压tar.gz并重命名_linux解压tar.gz文件命名为jpg.tar.gz tar –cjf jpg.tar.bz2 *.jpg //将目录里所有jpg文件打包成jpg.tar后,并且将其 需要先下载zip for linux 解压 tar –xvf file.tar //解压 tar...

    原标题:linux解压tar.gz并重命名_linux解压tar.gz文件

    命名为jpg.tar.gz tar –cjf jpg.tar.bz2 *.jpg //将目录里所有jpg文件打包成jpg.tar后,并且将其 需要先下载zip for linux 解压 tar –xvf file.tar //解压 tar包 tar -xzvf file.tar.gz //解压tar.gz ta

    CSDN提供了精准linux解压tar重命名信息,主要包含: linux解压tar重命名信等内容,查询最 tar-zcvfxxx.tar.gz/xxx把xxx文件夹压缩到xxx.tar.gz .(2015-06-03 19:41:34) tar[-cxtzjvfpPN

    root@queen ~ # tar -czvf robin.tar.gz /home/robin tar: Removing leading `/' from member linux上压缩一个文件,然后scp到另一个服务器,之后解压的时候想重命名,这似乎不支持。

    以及如何使用它们对.tar、.gz 、.tar.gz、.tgz、.bz2、.tar.bz2、.Z、. tar.Z、.zip、.rar这1 linux下提供了zip和unzip程序,zip是压缩程序,unzip是解压程序。它们的参数选项很多,这

    zip jpg.zip *.jpg //zip格式的压缩,需要先下载zip for linux 解压 tar –xvf file.tar //解压 tar包 tar -xzvf file.tar.gz //解压tar.gz tar -xjvf file.tar.bz2 //解压 tar.bz2 tar –xZvf file.tar.Z //解压tar

    [root@iZ23hdndo4vZ tmp]# tar -xzvf mysql-5.7.23-linux-glibc2.12-x86_64.tar.gz -C /usr/local/ [root@iZ23hdndo4vZ local]# mv mysql-5.7.23-linux-glibc2.12-x86_64 mysql 3.在/user

    你应该已经能够使用它们对.tar 、.gz、.tar.gz、.tgz、.bz2、.tar.bz2、. Z、.tar.Z、.zip、 件进行解压了,以后应该不需要为下载了一个软件而不知道如何在Linux下解开而烦恼了

    指定了一下文件解压后存放的路径!

    import org.apache.tools.tar.TarEntry; import org.apache.tools.tar.TarInputStream; /* * 解压tar.gz文件 * ClassName: Test01 * @Description: TODO * @author HJJ * @date 2018年

    有一个文件夹dd里面有文件 对dd打包 tar cvf dd.tar dd 现在要对dd.tar解压tar xvf dd.tar, 在Linux下使用 em tar /em 命令来将文件打包并压缩是很通常的用法了。可是Linux的文

    303aeee4bde83adbca9ab7f36acf1af2.png

    Linux解压tar.gz文件时提示gzip:stdin:not错误 -

    600x450 - 237KB - JPEG

    06fd86718010f774a551cdd0fafa2252.png

    Linux文件操作命令和压缩相关命令 -头条巴士

    531x203 - 24KB - JPEG

    bad4901f7d4528933e5c9f703817a8ae.png

    Linux系统下MongoDB的简单安装与基本操作_

    640x241 - 9KB - PNG

    210138619.png

    Linux系统下MongoDB的简单安装与基本操作_

    640x241 - 13KB - PNG

    cd6b40eecfa0b66eecf8b99b99b8e659.png

    Linux系统下MongoDB的简单安装与基本操作 -

    640x241 - 11KB - PNG

    56729a5a78f2687228ebc6572139a341.png

    Ubuntu 12.04下安装MySQL图解

    458x154 - 22KB - PNG

    09632f75b4b53cbf1764674a05d886da.png

    Ubuntu下安装JDK,Eclipse和Android SDK

    470x256 - 17KB - PNG

    53b47010bbc8a7029e8fece05d60fab8.png

    linux怎么解压tar.gz 我怎么老失败_百度知道

    600x439 - 81KB - JPEG

    a1b238bf7b87fed61092e9b6488cc182.png

    linux怎么解压tar.gz 我怎么老失败?_百度知道

    600x329 - 59KB - JPEG

    fd7cda82f77a57deab34788ee065da0e.png

    linux中tar之解压和压缩常用-Linux-第七城市

    859x382 - 44KB - PNG

    d59d180dbf9d482e6d779dbe631b609d.png

    linux下如何如何解压tar.gz文件_突袭网-提供留

    295x220 - 7KB - JPEG

    a607255dbd77db3a2cc7009978918a32.jpg

    如何创建和解压tar.xz文件-Linux-第七城市

    625x406 - 178KB - JPEG

    26b1edfb06400bca4f9cfa75008637c6.png

    Linux下解压tar.xz格式压缩文件 - Linux - 红黑联

    943x776 - 128KB - PNG

    29c586857869bbb7785502ebf414049b.png

    烂泥:CentOS命令学习之tar打包与解压-Linux-第

    647x620 - 71KB - PNG

    cc2fb3b164bed6158d9af1807924edd5.png

    烂泥:CentOS命令学习之tar打包与解压-Linux-第

    567x242 - 39KB - PNG

    责任编辑:

    展开全文
  • tar-c: 建立压缩档案-x:解压-t:查看内容-r:向压缩归档文件末尾追加文件-u:更新原压缩包中的文件这五个是独立的命令,压缩解压都要用到其中一个,可以和别的命令连用但只能用其中一个。下面的参数是根据需要在...
  • Android zip解压

    2021-03-07 15:13:16
    /*** Android Zip压缩解压缩* @author Ren.xia* @version 1.0* @updated 26-七月-2010 13:04:27*/public class XZip {public XZip(){}/*** 取得压缩包中的 文件列表(文件夹,文件自选)* @param zipFileString 压...
  • 上次写了个解压缩功能,但有局限性,比如压缩文件xx.zip 里包括子目录的情况下,执行上次解压缩的功能就不能实现我们想...1 /**2 * 解压缩功能.3 * 将zipFile文件解压到folderPath目录下.4 *@throwsException5 */6 p...
  • linux解压tar.gz

    2021-05-15 06:13:08
    HTTP协议header标头详解本文根据RFC2616(HTTP/1.1规范),参考 http://www.w3.org/Protocols/rfc2068/rfc2068 http://www.w3.org/Protocols/r ...Android手机拍照参考的这个视频教程:......
  • }/**GZIP解压缩 *@paramzipText GZIP压缩过的字符串 *@return解压后的字符串 *@throwsIOException*/ public static String decompress(String zipText) throwsIOException {byte[] compressed =Base64.decode...
  • tar.gz 是 gzip 格式的压缩包 # 解压命令 tar -zxvf 压缩包名.tar.gz -C 目标目录/ tar.xz 是 xz 格式的压缩包 # 解压命令 tar -xvf 压缩包名.tar.xz -C 目标目录/ -z 表示:通过 gzip 过滤归档(用 gzip 解压) -...
  • 前言其实在网上有很多介绍下载文件或者解压zip文件的文章,但是两者结合的不多,所以这篇文章在此记录一下下载zip文件并直接解压的方法,直接上代码,文末有源码下载。下载:import java.io.BufferedInputStream;...
  • 不过挺奇怪的,google sdk自带的内核映像的BogoMIPS是3.18的,偶编译出来的是3.13的。 为了方便没有安装sdk的朋友也可以编译内核,我把config.gz贴上来
  • boot.imgboot和recovery映像并不是一个完整的文件系统,它们是一种android自定义的文件格式,该格式包括了2K的文件头,后面紧跟着是用gzip压缩过的内核,再后面是一个ramdisk内存盘,ramdisk映像是一个最基础的小型...
  • 1.assets内压缩文件解压AssetsZipUtils,包含一个获取文件夹下所有文件路径的方法,方便获取文件使用public class AssetsZipUtils {public static final String TAG = "ZIP";/*** 解压assets目录下的zip到指定的路径*...
  • 关于zip文件压缩及解压缩的方法的文章哟很多,但两者的结合并不多,因此本文记录了Android实现zip文件压缩及解压缩的方法,下面就跟着技术狗小编的步伐来学习吧!DirTraversal.java如下:package com.once;import ...
  • 【简介】:ZArchiver Pro是一款安卓平台的压缩解压工具,能够在手机端解压常见的rar,zip,7z等压缩文件,本版为Pro高级直装版本,解锁高级功能,支持压缩包注释查看。支持中文文件名,(这是安卓上唯一的),支持rar...
  • 主机上,使用tar -zxvf 解压tar.gz包的时候,出现以下错误: gzip: stdin: not in gzip format tar: Child returned status 1 tar: Error is not recoverable: exiting now 问题办法: 开门见山,先给出解决我...
  • android源码分卷压缩和解压

    千次阅读 2021-11-16 17:40:13
    再通过以下命令进行合成和解压: $ cat my*>myfile.tar.gz $ tar -zxvf myfile.tar.gz -C . 以上就会解压出我之前压缩的.bz2类型的文件,再次解压即可。 $ tar -jxvf myfile.tar.bz2 -C . 注意点: 1.通过以上方式...
  • android下载解压安装

    2021-03-01 08:19:08
    # 异常1、 java.lang.IllegalArgumentException: Failed to find configured root that contains /storage/emulated2、FileProvider.getUriForFile 空指针3、升级到Android8.0后,一直提示”安装解析包错误”# 异常...
  • 安卓怎么解压7z带密码的文件

    千次阅读 2021-06-09 14:21:08
    如何让安卓手机可以解压7z格式的压缩包7z 是一种主流高效的压缩格式,它拥有极高的压缩比,7z的压缩包后缀名为“.7z”。在一些安卓手机上解压7z文件需要专门的解压缩工具,比如老牌压缩软件RAR。 1.在手机应用市场中...
  • 主要介绍了Android实现压缩和解压文件的实例代码,涉及到批量压缩文件夹,解压缩一个文件等方面的知识点,本文介绍的非常详细,具有参考借鉴价值,感兴趣的朋友一起看下吧
  • 1.工具类  /** * Created by YuShuangPing on 2018/12/15. */ public class ZipUtils { public static final String TAG = "ZIP"; ... * 解压assets目录下的zip到指定的路径 ...
  • linux下怎么解压.tar.gz .tar.bz2命令从网络上下载到的源码包, 最常见的是 .tar.gz 包, 还有一部分是 .tar.bz2包要解压很简单 :.tar.gz 格式解压命令为 tar -zxvpf xx.tar.gz.tar.bz2 格式解压命令为 tar -jxvpf ...
  • 一、分卷压缩命令格式:tar cjf - apls/ |split -b 100m - apls.tar.bz2 ...二、分卷解压方法一。 1、先把所有分卷合并: cat apls.tar.bz2* >apls.tar.bz2 2、然后解压: tar xjvf apls.tar...
  • Android解压boot.img

    2020-05-25 20:48:47
    # split_bootimg.pl boot.img # gunzip boot.gz # cpio -i -F boot
  • 压缩格式的应用场景:网络传输数据文件时,单个文件速度比较慢,可以使用tar.gz打包,然后传输,这样大大的提高了传输效率,也保证了整体文件的完整性。下面是Java语言中解压缩tar.gz文件的实现。实现工具类:...
  • 软件介绍全能压缩是一款专业的手机端压缩解压工具,全能压缩通过它就可以在手机上下载或者浏览压缩包内的内容,无需电脑操作就可以完成使用,支持多种格式,使用非常方便,且不会对源文件造成损害,欢...
  • PHP解压tar.gz格式文件的方法本文实例讲述了PHP解压tar.gz格式文件的方法。分享给大家供大家参考,具体如下:1、运用php自带压缩与归档扩展(phar)$phar = new PharData('song.tar.gz');//路径 要解压的文件 是否覆盖...
  • android linux 解压命令

    千次阅读 2012-12-23 21:37:04
    解压gz00,gz01,gz02,gz03,....压缩包时 cat ALPS......tar.gz*|tar -zx  例如 ALPS.GB2.MP.V2.21_MTKSHANGHAI75CU_6628_GB2_INHOUSE.tar.gz00 ...... cat ALPS.GB2.MP.V2.21_MTKSHANGHAI75CU_6628_GB2_INHOUSE....

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 10,403
精华内容 4,161
关键字:

安卓gz解压