精华内容
下载资源
问答
  • java压缩和解压缩tar格式

    千次阅读 2016-03-16 09:22:13
    java压缩和解压缩tar格式
    import java.io.BufferedInputStream;  
    import java.io.BufferedOutputStream;  
    import java.io.File;  
    import java.io.FileInputStream;  
    import java.io.FileOutputStream;  
      
    import org.apache.commons.compress.archivers.tar.TarArchiveEntry;  
    import org.apache.commons.compress.archivers.tar.TarArchiveOutputStream;  
    import org.apache.commons.compress.archivers.tar.TarArchiveInputStream;  
      
    /** 
     * TAR工具 
     *  
     * 
     * @since 1.0 
     */  
    public abstract class TarUtils {  
      
        private static final String BASE_DIR = "";  
      
        // 符号"/"用来作为目录标识判断符  
        private static final String PATH = File.separator;  
        private static final int BUFFER = 1024;  
      
        private static final String EXT = ".tar";  
      
        /** 
         * 归档 
         *  
         * @param srcPath 
         * @param destPath 
         * @throws Exception 
         */  
        public static void archive(String srcPath, String destPath)  
                throws Exception {  
      
            File srcFile = new File(srcPath);  
      
            archive(srcFile, destPath);  
      
        }  
      
        /** 
         * 归档 
         *  
         * @param srcFile 
         *            源路径 
         * @param destPath 
         *            目标路径 
         * @throws Exception 
         */  
        public static void archive(File srcFile, File destFile) throws Exception {  
      
            TarArchiveOutputStream taos = new TarArchiveOutputStream(  
                    new FileOutputStream(destFile));  
      
            archive(srcFile, taos, BASE_DIR);  
      
            taos.flush();  
            taos.close();  
        }  
      
        /** 
         * 归档 
         *  
         * @param srcFile 
         * @throws Exception 
         */  
        public static void archive(File srcFile) throws Exception {  
            String name = srcFile.getName();  
            String basePath = srcFile.getParent();  
            String destPath = basePath+File.separator + name + EXT;  
            archive(srcFile, destPath);  
        }  
      
        /** 
         * 归档文件 
         *  
         * @param srcFile 
         * @param destPath 
         * @throws Exception 
         */  
        public static void archive(File srcFile, String destPath) throws Exception {  
            archive(srcFile, new File(destPath));  
        }  
      
        /** 
         * 归档 
         *  
         * @param srcPath 
         * @throws Exception 
         */  
        public static void archive(String srcPath) throws Exception {  
            File srcFile = new File(srcPath);  
      
            archive(srcFile);  
        }  
      
        /** 
         * 归档 
         *  
         * @param srcFile 
         *            源路径 
         * @param taos 
         *            TarArchiveOutputStream 
         * @param basePath 
         *            归档包内相对路径 
         * @throws Exception 
         */  
        private static void archive(File srcFile, TarArchiveOutputStream taos,  
                String basePath) throws Exception {  
            if (srcFile.isDirectory()) {  
                archiveDir(srcFile, taos, basePath);  
            } else {  
                archiveFile(srcFile, taos, basePath);  
            }  
        }  
      
        /** 
         * 目录归档 
         *  
         * @param dir 
         * @param taos 
         *            TarArchiveOutputStream 
         * @param basePath 
         * @throws Exception 
         */  
        private static void archiveDir(File dir, TarArchiveOutputStream taos,  
                String basePath) throws Exception {  
      
            File[] files = dir.listFiles();  
      
            if (files.length < 1) {  
                TarArchiveEntry entry = new TarArchiveEntry(basePath  
                        + dir.getName() + PATH);  
      
                taos.putArchiveEntry(entry);  
                taos.closeArchiveEntry();  
            }  
      
            for (File file : files) {  
      
                // 递归归档  
                archive(file, taos, basePath + dir.getName() + PATH);  
      
            }  
        }  
      
        /** 
         * 数据归档 
         *  
         * @param data 
         *            待归档数据 
         * @param path 
         *            归档数据的当前路径 
         * @param name 
         *            归档文件名 
         * @param taos 
         *            TarArchiveOutputStream 
         * @throws Exception 
         */  
        private static void archiveFile(File file, TarArchiveOutputStream taos,  
                String dir) throws Exception {  
      
            /** 
             * 归档内文件名定义 
             *  
             * <pre> 
             * 如果有多级目录,那么这里就需要给出包含目录的文件名 
             * 如果用WinRAR打开归档包,中文名将显示为乱码 
             * </pre> 
             */  
            TarArchiveEntry entry = new TarArchiveEntry(dir + file.getName()); 
             //如果打包不需要文件夹,就用 new TarArchiveEntry(file.getName())
      
            entry.setSize(file.length());  
      
            taos.putArchiveEntry(entry);  
      
            BufferedInputStream bis = new BufferedInputStream(new FileInputStream(  
                    file));  
            int count;  
            byte data[] = new byte[BUFFER];  
            while ((count = bis.read(data, 0, BUFFER)) != -1) {  
                taos.write(data, 0, count);  
            }  
      
            bis.close();  
      
            taos.closeArchiveEntry();  
        }  
      
        /** 
         * 解归档 
         *  
         * @param srcFile 
         * @throws Exception 
         */  
        public static void dearchive(File srcFile) throws Exception {  
            String basePath = srcFile.getParent();  
            dearchive(srcFile, basePath);  
        }  
      
        /** 
         * 解归档 
         *  
         * @param srcFile 
         * @param destFile 
         * @throws Exception 
         */  
        public static void dearchive(File srcFile, File destFile) throws Exception {  
      
            TarArchiveInputStream tais = new TarArchiveInputStream(  
                    new FileInputStream(srcFile));  
            dearchive(destFile, tais);  
      
            tais.close();  
      
        }  
      
        /** 
         * 解归档 
         *  
         * @param srcFile 
         * @param destPath 
         * @throws Exception 
         */  
        public static void dearchive(File srcFile, String destPath)  
                throws Exception {  
            dearchive(srcFile, new File(destPath));  
      
        }  
      
        /** 
         * 文件 解归档 
         *  
         * @param destFile 
         *            目标文件 
         * @param tais 
         *            ZipInputStream 
         * @throws Exception 
         */  
        private static void dearchive(File destFile, TarArchiveInputStream tais)  
                throws Exception {  
      
            TarArchiveEntry entry = null;  
            while ((entry = tais.getNextTarEntry()) != null) {  
      
                // 文件  
                String dir = destFile.getPath() + File.separator + entry.getName();  
      
                File dirFile = new File(dir);  
      
                // 文件检查  
                fileProber(dirFile);  
      
                if (entry.isDirectory()) {  
                    dirFile.mkdirs();  
                } else {  
                    dearchiveFile(dirFile, tais);  
                }  
      
            }  
        }  
      
        /** 
         * 文件 解归档 
         *  
         * @param srcPath 
         *            源文件路径 
         *  
         * @throws Exception 
         */  
        public static void dearchive(String srcPath) throws Exception {  
            File srcFile = new File(srcPath);  
      
            dearchive(srcFile);  
        }  
      
        /** 
         * 文件 解归档 
         *  
         * @param srcPath 
         *            源文件路径 
         * @param destPath 
         *            目标文件路径 
         * @throws Exception 
         */  
        public static void dearchive(String srcPath, String destPath)  
                throws Exception {  
      
            File srcFile = new File(srcPath);  
            dearchive(srcFile, destPath);  
        }  
      
        /** 
         * 文件解归档 
         *  
         * @param destFile 
         *            目标文件 
         * @param tais 
         *            TarArchiveInputStream 
         * @throws Exception 
         */  
        private static void dearchiveFile(File destFile, TarArchiveInputStream tais)  
                throws Exception {  
      
            BufferedOutputStream bos = new BufferedOutputStream(  
                    new FileOutputStream(destFile));  
      
            int count;  
            byte data[] = new byte[BUFFER];  
            while ((count = tais.read(data, 0, BUFFER)) != -1) {  
                bos.write(data, 0, count);  
            }  
      
            bos.close();  
        }  
      
        /** 
         * 文件探针 
         *  
         * <pre> 
         * 当父目录不存在时,创建目录! 
         * </pre> 
         *  
         * @param dirFile 
         */  
        private static void fileProber(File dirFile) {  
      
            File parentFile = dirFile.getParentFile();  
            if (!parentFile.exists()) {  
      
                // 递归寻找上级目录  
                fileProber(parentFile);  
      
                parentFile.mkdir();  
            }  
      
        }  
      
        public static void main(String[] args){
            try{
                String path="e:/test";//要压缩的文件夹
                archive(path); //压缩
                dearchive(path+".tar","e:/test");//解压缩
            }catch(Exception e){
            }   
     
        }
    }  

    展开全文
  • Java压缩技术(一) ZLib  Java压缩技术(二) ZIP压缩——Java原生实现  Java压缩技术(三) ZIP解压缩——Java原生实现  Java压缩技术(四) GZIP——Java原生实现  Java压缩技术(五) GZIP相关——浏览器...
    相关链接: 

    Java压缩技术(一) ZLib

    Java压缩技术(二) ZIP压缩——Java原生实现 

    Java压缩技术(三) ZIP解压缩——Java原生实现

    Java压缩技术(四) GZIP——Java原生实现 

    Java压缩技术(五) GZIP相关——浏览器解析 

    Java压缩技术(六) BZIP2——Commons实现 

    Java压缩技术(七) TAR——Commons实现 



    解压缩与压缩运作方式相反,原理大抵相同,由ZipInputStream通过read方法对数据解压,同时需要通过CheckedInputStream设置冗余校验码,如: 

    Java代码  收藏代码
    1. CheckedInputStream cis = new CheckedInputStream(new FileInputStream(  
    2.         srcFile), new CRC32());  
    3.   
    4. ZipInputStream zis = new ZipInputStream(cis);  


    需要注意的是,在构建解压文件时,需要考虑目录的自动创建,这里通过递归方式逐层创建父目录,如下所示: 

    Java代码  收藏代码
    1. /** 
    2.  * 文件探针 
    3.  *  
    4.  *  
    5.  * 当父目录不存在时,创建目录! 
    6.  *  
    7.  *  
    8.  * @param dirFile 
    9.  */  
    10. private static void fileProber(File dirFile) {  
    11.   
    12.     File parentFile = dirFile.getParentFile();  
    13.     if (!parentFile.exists()) {  
    14.   
    15.         // 递归寻找上级目录  
    16.         fileProber(parentFile);  
    17.   
    18.         parentFile.mkdir();  
    19.     }  
    20.   
    21. }  


    在压缩的时候,我们是将一个一个文件作为压缩添加项(ZipEntry)添加至压缩包中,解压缩就要将一个一个压缩项从压缩包中提取出来,如下所示: 

    Java代码  收藏代码
    1. /** 
    2.  * 文件 解压缩 
    3.  *  
    4.  * @param destFile 
    5.  *            目标文件 
    6.  * @param zis 
    7.  *            ZipInputStream 
    8.  * @throws Exception 
    9.  */  
    10. private static void decompress(File destFile, ZipInputStream zis)  
    11.         throws Exception {  
    12.   
    13.     ZipEntry entry = null;  
    14.     while ((entry = zis.getNextEntry()) != null) {  
    15.   
    16.         // 文件  
    17.         String dir = destFile.getPath() + File.separator + entry.getName();  
    18.   
    19.         File dirFile = new File(dir);  
    20.   
    21.         // 文件检查  
    22.         fileProber(dirFile);  
    23.   
    24.             if (entry.isDirectory()){  
    25.                 dirFile.mkdirs();  
    26.             } else {  
    27.             decompressFile(dirFile, zis);  
    28.             }  
    29.   
    30.             zis.closeEntry();  
    31.     }  
    32. }  




    最核心的解压缩实现,其实与压缩实现非常相似,代码如下所示: 

    Java代码  收藏代码
    1. /** 
    2.  * 文件解压缩 
    3.  *  
    4.  * @param destFile 
    5.  *            目标文件 
    6.  * @param zis 
    7.  *            ZipInputStream 
    8.  * @throws Exception 
    9.  */  
    10. private static void decompressFile(File destFile, ZipInputStream zis)  
    11.         throws Exception {  
    12.   
    13.     BufferedOutputStream bos = new BufferedOutputStream(  
    14.             new FileOutputStream(destFile));  
    15.   
    16.     int count;  
    17.     byte data[] = new byte[BUFFER];  
    18.     while ((count = zis.read(data, 0, BUFFER)) != -1) {  
    19.         bos.write(data, 0, count);  
    20.     }  
    21.   
    22.     bos.close();  
    23. }  




    来个完整的解压缩实现,代码如下: 

    Java代码  收藏代码
    1. /** 
    2.  * 2010-4-12 
    3.  */  
    4. package org.zlex.commons.io;  
    5.   
    6. import java.io.BufferedInputStream;  
    7. import java.io.BufferedOutputStream;  
    8. import java.io.File;  
    9. import java.io.FileInputStream;  
    10. import java.io.FileOutputStream;  
    11. import java.util.zip.CRC32;  
    12. import java.util.zip.CheckedInputStream;  
    13. import java.util.zip.CheckedOutputStream;  
    14. import java.util.zip.ZipEntry;  
    15. import java.util.zip.ZipInputStream;  
    16. import java.util.zip.ZipOutputStream;  
    17.   
    18. /** 
    19.  * ZIP压缩工具 
    20.  *  
    21.  * @author 梁栋    
    22.  * @since 1.0 
    23.  */  
    24. public class ZipUtils {  
    25.   
    26.     public static final String EXT = ".zip";  
    27.     private static final String BASE_DIR = "";  
    28.     private static final String PATH = File.separator;  
    29.     private static final int BUFFER = 1024;  
    30.   
    31.     /** 
    32.      * 文件 解压缩 
    33.      *  
    34.      * @param srcPath 
    35.      *            源文件路径 
    36.      *  
    37.      * @throws Exception 
    38.      */  
    39.     public static void decompress(String srcPath) throws Exception {  
    40.         File srcFile = new File(srcPath);  
    41.   
    42.         decompress(srcFile);  
    43.     }  
    44.   
    45.     /** 
    46.      * 解压缩 
    47.      *  
    48.      * @param srcFile 
    49.      * @throws Exception 
    50.      */  
    51.     public static void decompress(File srcFile) throws Exception {  
    52.         String basePath = srcFile.getParent();  
    53.         decompress(srcFile, basePath);  
    54.     }  
    55.   
    56.     /** 
    57.      * 解压缩 
    58.      *  
    59.      * @param srcFile 
    60.      * @param destFile 
    61.      * @throws Exception 
    62.      */  
    63.     public static void decompress(File srcFile, File destFile) throws Exception {  
    64.   
    65.         CheckedInputStream cis = new CheckedInputStream(new FileInputStream(  
    66.                 srcFile), new CRC32());  
    67.   
    68.         ZipInputStream zis = new ZipInputStream(cis);  
    69.   
    70.         decompress(destFile, zis);  
    71.   
    72.         zis.close();  
    73.   
    74.     }  
    75.   
    76.     /** 
    77.      * 解压缩 
    78.      *  
    79.      * @param srcFile 
    80.      * @param destPath 
    81.      * @throws Exception 
    82.      */  
    83.     public static void decompress(File srcFile, String destPath)  
    84.             throws Exception {  
    85.         decompress(srcFile, new File(destPath));  
    86.   
    87.     }  
    88.   
    89.     /** 
    90.      * 文件 解压缩 
    91.      *  
    92.      * @param srcPath 
    93.      *            源文件路径 
    94.      * @param destPath 
    95.      *            目标文件路径 
    96.      * @throws Exception 
    97.      */  
    98.     public static void decompress(String srcPath, String destPath)  
    99.             throws Exception {  
    100.   
    101.         File srcFile = new File(srcPath);  
    102.         decompress(srcFile, destPath);  
    103.     }  
    104.   
    105.     /** 
    106.      * 文件 解压缩 
    107.      *  
    108.      * @param destFile 
    109.      *            目标文件 
    110.      * @param zis 
    111.      *            ZipInputStream 
    112.      * @throws Exception 
    113.      */  
    114.     private static void decompress(File destFile, ZipInputStream zis)  
    115.             throws Exception {  
    116.   
    117.         ZipEntry entry = null;  
    118.         while ((entry = zis.getNextEntry()) != null) {  
    119.   
    120.             // 文件  
    121.             String dir = destFile.getPath() + File.separator + entry.getName();  
    122.   
    123.             File dirFile = new File(dir);  
    124.   
    125.             // 文件检查  
    126.             fileProber(dirFile);  
    127.   
    128.             if (entry.isDirectory()) {  
    129.                 dirFile.mkdirs();  
    130.             } else {  
    131.                 decompressFile(dirFile, zis);  
    132.             }  
    133.   
    134.             zis.closeEntry();  
    135.         }  
    136.     }  
    137.   
    138.     /** 
    139.      * 文件探针 
    140.      *  
    141.      *  
    142.      * 当父目录不存在时,创建目录! 
    143.      *  
    144.      *  
    145.      * @param dirFile 
    146.      */  
    147.     private static void fileProber(File dirFile) {  
    148.   
    149.         File parentFile = dirFile.getParentFile();  
    150.         if (!parentFile.exists()) {  
    151.   
    152.             // 递归寻找上级目录  
    153.             fileProber(parentFile);  
    154.   
    155.             parentFile.mkdir();  
    156.         }  
    157.   
    158.     }  
    159.   
    160.     /** 
    161.      * 文件解压缩 
    162.      *  
    163.      * @param destFile 
    164.      *            目标文件 
    165.      * @param zis 
    166.      *            ZipInputStream 
    167.      * @throws Exception 
    168.      */  
    169.     private static void decompressFile(File destFile, ZipInputStream zis)  
    170.             throws Exception {  
    171.   
    172.         BufferedOutputStream bos = new BufferedOutputStream(  
    173.                 new FileOutputStream(destFile));  
    174.   
    175.         int count;  
    176.         byte data[] = new byte[BUFFER];  
    177.         while ((count = zis.read(data, 0, BUFFER)) != -1) {  
    178.             bos.write(data, 0, count);  
    179.         }  
    180.   
    181.         bos.close();  
    182.     }  
    183.   
    184. }  




    其实,理解了ZIP的工作原理,这些代码看起来很好懂! 

    把刚才做的压缩文件再用上述代码解开看看,测试用例如下: 

    Java代码  收藏代码
    1. /** 
    2.  * 2010-4-12 
    3.  */  
    4. package org.zlex.commons.io;  
    5.   
    6. import static org.junit.Assert.*;  
    7.   
    8. import org.junit.Test;  
    9.   
    10. /** 
    11.  *  
    12.  * @author 梁栋 
    13.  * @version 1.0 
    14.  * @since 1.0 
    15.  */  
    16. public class ZipUtilsTest {  
    17.   
    18.     /** 
    19.      *   
    20.      */  
    21.     @Test  
    22.     public void test() throws Exception {  
    23.         // 解压到指定目录  
    24.         ZipUtils.decompress("d:\\f.txt.zip""d:\\ff");  
    25.         // 解压到当前目录  
    26.         ZipUtils.decompress("d:\\fd.zip");  
    27.     }  
    28.   
    29. }  


    完整代码详见附件! 

    java原生的ZIP实现虽然在压缩时会因与系统字符集不符产生中文乱码,但在解压缩后,字符集即可恢复。 

    除了java原生的ZIP实现外,commons和ant也提供了相应的ZIP算法实现,有机会我再一一介绍! 
    展开全文
  • JAVA 压缩单个文件

    2017-12-21 13:40:00
    java 压缩单个文件
    public class ZipTest {
        public static void main(String[] args) throws IOException {
            zipFile("1.txt", "G:\\file\\");
        }
    
        /**
         * 压缩单个文件
         *
         * @param fileName 需要压缩的文件名
         * @param filePath 需要压缩的文件路径
         */
        public static void zipFile(String fileName, String filePath) {
            File srcfile = new File(filePath + fileName);
            if (!srcfile.exists()) {
                return;
            }
            byte[] buf = new byte[1024];
            FileInputStream in = null;
            ZipOutputStream out = null;
            try {
                File targetFile = new File(srcfile.getPath() + ".zip");
                out = new ZipOutputStream(new FileOutputStream(targetFile));
                int len;
                in = new FileInputStream(srcfile);
                out.putNextEntry(new ZipEntry(fileName));
    
                while ((len = in.read(buf)) > 0) {
                    out.write(buf, 0, len);
                }
            } catch (Exception e) {
                e.printStackTrace();
            } finally {
                try {
                    if (out != null) {
                        out.closeEntry();
                    }
                    if (in != null) {
                        in.close();
                    }
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }
    展开全文
  • java压缩文本内容

    千次阅读 2019-03-03 22:27:38
    java压缩文本内容工具类如下: package com.my.util; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.util.zip.GZIPInputStream; import...

    java压缩文本内容工具类如下:

    package com.my.util;
    
    import java.io.ByteArrayInputStream;
    import java.io.ByteArrayOutputStream;
    import java.io.IOException;
    import java.util.zip.GZIPInputStream;
    import java.util.zip.GZIPOutputStream;
    import java.util.zip.ZipEntry;
    import java.util.zip.ZipInputStream;
    import java.util.zip.ZipOutputStream;
    
    public class ZipUtils {
    
        /**
         * 使用gzip进行压缩
         */
        public static String gzip(String primStr) {
            if (primStr == null || primStr.length() == 0) {
                return primStr;
            }
    
            ByteArrayOutputStream out = new ByteArrayOutputStream();
    
            GZIPOutputStream gzip = null;
            try {
                gzip = new GZIPOutputStream(out);
                gzip.write(primStr.getBytes());
            } catch (IOException e) {
                e.printStackTrace();
            } finally {
                if (gzip != null) {
                    try {
                        gzip.close();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
            }
    
            return new sun.misc.BASE64Encoder().encode(out.toByteArray());
        }
    
        /**
         * <p>Description:使用gzip进行解压缩</p>
         *
         * @param compressedStr
         * @return
         */
        public static String gunzip(String compressedStr) {
            if (compressedStr == null) {
                return null;
            }
    
            ByteArrayOutputStream out = new ByteArrayOutputStream();
            ByteArrayInputStream in = null;
            GZIPInputStream ginzip = null;
            byte[] compressed = null;
            String decompressed = null;
            try {
                compressed = new sun.misc.BASE64Decoder().decodeBuffer(compressedStr);
                in = new ByteArrayInputStream(compressed);
                ginzip = new GZIPInputStream(in);
    
                byte[] buffer = new byte[1024];
                int offset = -1;
                while ((offset = ginzip.read(buffer)) != -1) {
                    out.write(buffer, 0, offset);
                }
                decompressed = out.toString();
            } catch (IOException e) {
                e.printStackTrace();
            } finally {
                if (ginzip != null) {
                    try {
                        ginzip.close();
                    } catch (IOException e) {
                    }
                }
                if (in != null) {
                    try {
                        in.close();
                    } catch (IOException e) {
                    }
                }
                if (out != null) {
                    try {
                        out.close();
                    } catch (IOException e) {
                    }
                }
            }
    
            return decompressed;
        }
    
        /**
         * 使用zip进行压缩
         *
         * @param str 压缩前的文本
         * @return 返回压缩后的文本
         */
        public static final String zip(String str) {
            if (str == null)
                return null;
            byte[] compressed;
            ByteArrayOutputStream out = null;
            ZipOutputStream zout = null;
            String compressedStr = null;
            try {
                out = new ByteArrayOutputStream();
                zout = new ZipOutputStream(out);
                zout.putNextEntry(new ZipEntry("0"));
                zout.write(str.getBytes());
                zout.closeEntry();
                compressed = out.toByteArray();
                compressedStr = new sun.misc.BASE64Encoder().encodeBuffer(compressed);
            } catch (IOException e) {
                compressed = null;
            } finally {
                if (zout != null) {
                    try {
                        zout.close();
                    } catch (IOException e) {
                    }
                }
                if (out != null) {
                    try {
                        out.close();
                    } catch (IOException e) {
                    }
                }
            }
            return compressedStr;
        }
    
        /**
         * 使用zip进行解压缩
         *
         * @param compressed 压缩后的文本
         * @return 解压后的字符串
         */
        public static final String unzip(String compressedStr) {
            if (compressedStr == null) {
                return null;
            }
    
            ByteArrayOutputStream out = null;
            ByteArrayInputStream in = null;
            ZipInputStream zin = null;
            String decompressed = null;
            try {
                byte[] compressed = new sun.misc.BASE64Decoder().decodeBuffer(compressedStr);
                out = new ByteArrayOutputStream();
                in = new ByteArrayInputStream(compressed);
                zin = new ZipInputStream(in);
                zin.getNextEntry();
                byte[] buffer = new byte[1024];
                int offset = -1;
                while ((offset = zin.read(buffer)) != -1) {
                    out.write(buffer, 0, offset);
                }
                decompressed = out.toString();
            } catch (IOException e) {
                decompressed = null;
            } finally {
                if (zin != null) {
                    try {
                        zin.close();
                    } catch (IOException e) {
                    }
                }
                if (in != null) {
                    try {
                        in.close();
                    } catch (IOException e) {
                    }
                }
                if (out != null) {
                    try {
                        out.close();
                    } catch (IOException e) {
                    }
                }
            }
            return decompressed;
        }
    }

     

    展开全文
  • java压缩大文件OOM问题

    2020-04-21 14:38:51
    使用java压缩一个超过jvm空间的文件,怎么样能不造成OOM
  • java压缩解压string

    千次阅读 2016-04-15 13:29:34
    用到3个类 ZipUtil.java包含压缩解压...ZipUtilException.java压缩解压自定义异常类 ZipUtilTest.java测试类 ZipUtil.java package util; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputSt
  • Java压缩技术(一) ZLib  Java压缩技术(二) ZIP压缩——Java原生实现  Java压缩技术(三) ZIP解压缩——Java原生实现  Java压缩技术(四) GZIP——Java原生实现  Java压缩技术(五) GZIP相关——浏览器...
  • 去年整理了一篇ZLib算法Java实现(Java压缩技术(一) ZLib),一直惦记却没时间补充。今天得空,整理一下ZIP的java原生实现。  看了几篇zip压缩算法的帖子,讲的算是比较细致了,但就是没有对应的解压缩实现,太...
  • Java压缩技术(一) ZLib

    千次阅读 2017-06-14 10:52:14
    Java压缩技术(一) ZLib  Java压缩技术(二) ZIP压缩——Java原生实现  Java压缩技术(三) ZIP解压缩——Java原生实现  Java压缩技术(四) GZIP——Java原生实现  Java压缩技术(五) GZIP相关——浏览器...
  • Java压缩和解压缩zip文件

    千次阅读 2019-08-05 15:21:47
    至于更多格式的压缩可以选择apache的Commons Compress。 参考:https://o7planning.org/en/10195/java-compression-and-decompression-tutorial 读取zip文件列表 package com.dylan.ja...
  • 解决java压缩图片内存溢出问题

    千次阅读 2019-12-30 23:12:14
    解决java压缩图片内存溢出问题 import java.awt.image.BufferedImage; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.util.Iterator; import javax.imageio....
  • Java压缩解压缩文件的几种方法

    千次阅读 2016-12-31 22:43:10
    Java压缩解压缩文件的方法有,第一中借助java jdk自带的ZipOutputStream和ZipInputStream。 第二种,借助第三方jar, 例如Apache Commons Compress和Ant。下面以Ant为例详细介绍。 前提,需要将Ant的ant.jar添加到...
  • java压缩技术合集

    2011-01-05 13:55:00
    引用:http://snowolf.javaeye.com/blog/643010<br />  相关链接: Java压缩技术(一) ZLib Java压缩技术(二) ZIP压缩——Java原 Java压缩技术(三) ZIP解压缩——Java原生实现...
  • java压缩和解压ZIP和RAR文件该文章主要内容1.引入依赖2. 支持解压缩ZIP和winrar 5版本以上的RAR代码3. 解压缩方式说明3.1 ZIP可以使用 apache ant 实现文件压缩/解压缩3.2 winrar 5以下使用java-unrar解压缩,winrar...
  • JAVA 压缩/解压文件夹 [ tar.gz ]

    千次阅读 2019-11-27 17:50:53
    要用java 压缩多级文件夹&文件. 整理出一个可用的工具类,有问题,请及时联系. 压缩文件夹: CompressUtil.compress 解压 tar.gz 文件: CompressUtil.decompress maven 依赖: <dependency&...
  • 解决 Java 压缩文件中文乱码 引入maven依赖 <dependency> <groupId>ant</groupId> <artifactId>ant</artifactId> <version>1.6.5</version> </dependency>...
  • 这篇文章主要介绍了实例展示使用Java压缩和解压缩7z文件的方法,用到了7-zip的开源项目7-zip-JBinding,需要的朋友可以参考下 压缩为7z文件 首先网络上对7z的压缩内容很少。  尤其是java调用进行压缩的是更...
  • Java压缩技术(一) ZLib  Java压缩技术(二) ZIP压缩——Java原生实现  Java压缩技术(三) ZIP解压缩——Java原生实现  Java压缩技术(四) GZIP——Java原生实现  Java压缩技术(五) GZIP相关——浏览器...
  • Java压缩技术(一) ZLib  Java压缩技术(二) ZIP压缩——Java原生实现  Java压缩技术(三) ZIP解压缩——Java原生实现  Java压缩技术(四) GZIP——Java原生实现  Java压缩技术(五) GZIP相关——浏览器...
  • JAVA 压缩文件和解压文件 使用到Apache的一个开源Jar包ant-1.9.4.jar Java 压缩文件 public void zip(List<File> files, String zipFilepath) throws BuildException, RuntimeExceptioan { Zip zip = new Zip(); ...
  • 该方法递归实现将多个文件夹压缩在同一个zip包中 然后删除文件夹directoryName 下需要被压缩的文件。 package com.chuangqi.tools; import java.io.File; import java.io.FileInputStream; import java.io....
  • java 压缩类使用 Deflater 和 Inflater

    千次阅读 2016-04-06 17:02:32
    java 压缩类使用 Deflater 和 Inflater,在压缩字节比较少的时候,会出现压缩比为负。
  • 学习Java压缩zip文件:压缩单个文件和多个文件,不包含文件夹;怎样用Java将文件追加到zip文件中。测试类:/** * @FileName:ZipTest.java * @Description: TODO * @Copyright: All rights Reserved, Designed By ...
  • java压缩 GZIP进行简单压缩,ZIP进行多文件保存
  • Java压缩、解压缩、添加文件到压缩包工具类,解决文件名乱码、中文解压报错等问题。具体功能请查看源码。package cn.elwy.common.util.io; import java.io.File; import java.io.FileInputStream; import java.io....
  • Java 压缩类库的使用

    千次阅读 2012-10-05 17:41:06
    Java压缩类库的使用-1.总述 压缩是编程中常见的技巧,多用于大文件压缩,数据流压缩等。在Java类库中,内置了jar、ZIP、GZIP、ZLIB等的支持(见java.util.zip、java.util.jar包)。另外在Apache项目下Ant中ant.jar...
  • JAVA压缩图片并打成ZIP

    千次阅读 2016-01-27 17:45:29
    JAVA压缩图片并打成ZIP 博客分类:  Java java  引用  JAVA 获取网络图片或本地图片压缩后打成ZIP,但是获取网络流存在问题:每次获取图片流的大小不一样(图片不完整),以致无法构建图片进行压缩?  ...
  • java压缩图片文件大小

    热门讨论 2014-05-14 11:10:20
    java 开发压缩图片文件大小,2m-->200k 不是压缩宽高的

空空如也

空空如也

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

java压缩

java 订阅