`

Java 使用 GZIP 进行压缩和解压缩

    博客分类:
  • J2SE
 
阅读更多

转自:http://www.oschina.net/code/snippet_12_259

[代码]CompressFileGZIP.java    

01 import java.util.zip.GZIPOutputStream;
02 import java.io.FileOutputStream;
03 import java.io.FileInputStream;
04 import java.io.FileNotFoundException;
05 import java.io.IOException;
06  
07 /**
08  * -----------------------------------------------------------------------------
09  * Used to provide an example of compressing a file using the GZIP Format.
10  *
11  * @version 1.0
12  * @author  Jeffrey M. Hunter  (jhunter@idevelopment.info)
13  * @author  http://www.idevelopment.info
14  * -----------------------------------------------------------------------------
15  */
16  
17 public class CompressFileGZIP {
18  
19     /**
20      * Perform file compression.
21      * @param inFileName Name of the file to be compressed
22      */
23     private static void doCompressFile(String inFileName) {
24  
25         try {
26         
27             System.out.println("Creating the GZIP output stream.");
28             String outFileName = inFileName + ".gz";
29             GZIPOutputStream out = null;
30             try {
31                 out = new GZIPOutputStream(new FileOutputStream(outFileName));
32             } catch(FileNotFoundException e) {
33                 System.err.println("Could not create file: " + outFileName);
34                 System.exit(1);
35             }
36                     
37  
38             System.out.println("Opening the input file.");
39             FileInputStream in = null;
40             try {
41                 in = new FileInputStream(inFileName);
42             } catch (FileNotFoundException e) {
43                 System.err.println("File not found. " + inFileName);
44                 System.exit(1);
45             }
46  
47             System.out.println("Transfering bytes from input file to GZIP Format.");
48             byte[] buf = new byte[1024];
49             int len;
50             while((len = in.read(buf)) > 0) {
51                 out.write(buf, 0, len);
52             }
53             in.close();
54  
55             System.out.println("Completing the GZIP file");
56             out.finish();
57             out.close();
58         
59         } catch (IOException e) {
60             e.printStackTrace();
61             System.exit(1);
62         }
63  
64     }
65  
66     /**
67      * Sole entry point to the class and application.
68      * @param args Array of String arguments.
69      */
70     public static void main(String[] args) {
71     
72         if (args.length != 1) {
73             System.err.println("Usage: java CompressFileGZIP filename");
74         } else {
75             doCompressFile(args[0]);
76         }
77  
78             
79     }
80  
81 }

2. [代码]UncompressFileGZIP.java    

001 import java.util.zip.GZIPInputStream;
002 import java.io.FileOutputStream;
003 import java.io.FileInputStream;
004 import java.io.FileNotFoundException;
005 import java.io.IOException;
006  
007 /**
008  * -----------------------------------------------------------------------------
009  * Used to provide an example of uncompressing a file in the GZIP Format.
010  *
011  * @version 1.0
012  * @author  Jeffrey M. Hunter  (jhunter@idevelopment.info)
013  * @author  http://www.idevelopment.info
014  * -----------------------------------------------------------------------------
015  */
016  
017 public class UncompressFileGZIP {
018  
019     /**
020      * Uncompress the incoming file.
021      * @param inFileName Name of the file to be uncompressed
022      */
023     private static void doUncompressFile(String inFileName) {
024  
025         try {
026  
027             if (!getExtension(inFileName).equalsIgnoreCase("gz")) {
028                 System.err.println("File name must have extension of \".gz\"");
029                 System.exit(1);
030             }
031  
032             System.out.println("Opening the compressed file.");
033             GZIPInputStream in = null;
034             try {
035                 in = new GZIPInputStream(new FileInputStream(inFileName));
036             } catch(FileNotFoundException e) {
037                 System.err.println("File not found. " + inFileName);
038                 System.exit(1);
039             }
040  
041             System.out.println("Open the output file.");
042             String outFileName = getFileName(inFileName);
043             FileOutputStream out = null;
044             try {
045                 out = new FileOutputStream(outFileName);
046             } catch (FileNotFoundException e) {
047                 System.err.println("Could not write to file. " + outFileName);
048                 System.exit(1);
049             }
050  
051             System.out.println("Transfering bytes from compressed file to the output file.");
052             byte[] buf = new byte[1024];
053             int len;
054             while((len = in.read(buf)) > 0) {
055                 out.write(buf, 0, len);
056             }
057  
058             System.out.println("Closing the file and stream");
059             in.close();
060             out.close();
061         
062         } catch (IOException e) {
063             e.printStackTrace();
064             System.exit(1);
065         }
066  
067     }
068  
069     /**
070      * Used to extract and return the extension of a given file.
071      * @param f Incoming file to get the extension of
072      * @return <code>String</code> representing the extension of the incoming
073      *         file.
074      */
075     public static String getExtension(String f) {
076         String ext = "";
077         int i = f.lastIndexOf('.');
078  
079         if (i > 0 &&  i < f.length() - 1) {
080             ext = f.substring(i+1);
081         }      
082         return ext;
083     }
084  
085     /**
086      * Used to extract the filename without its extension.
087      * @param f Incoming file to get the filename
088      * @return <code>String</code> representing the filename without its
089      *         extension.
090      */
091     public static String getFileName(String f) {
092         String fname = "";
093         int i = f.lastIndexOf('.');
094  
095         if (i > 0 &&  i < f.length() - 1) {
096             fname = f.substring(0,i);
097         }      
098         return fname;
099     }
100  
101     /**
102      * Sole entry point to the class and application.
103      * @param args Array of String arguments.
104      */
105     public static void main(String[] args) {
106     
107         if (args.length != 1) {
108             System.err.println("Usage: java UncompressFileGZIP gzipfile");
109         } else {
110             doUncompressFile(args[0]);
111         }
112  
113     }
114  
115 }
分享到:
评论

相关推荐

    pako gzip 压缩和解压缩(支持中文)

    在本项目中,我们将关注如何使用pako库进行gzip压缩和解压缩,并解决在处理中英文内容时可能出现的乱码问题。 首先,让我们详细了解pako库。pako是基于zlib库的一个轻量级实现,它在浏览器和Node.js环境中都能运行...

    Java用GZIP压缩解压文件源码

    在本文中,我们将深入探讨如何使用Java实现GZIP压缩和解压缩文件的源码。 首先,我们需要引入Java的`java.util.zip`包,这个包包含了处理GZIP和其他压缩格式所需的类。在Java中,`GZIPOutputStream`和`...

    使用Huffman对文件进行压缩和解压缩

    7. **HuffmanTest**:这个文件名可能是一个测试类,用于实现上述的压缩和解压缩过程。在Java中,可以使用`java.io`和`java.nio`包下的类进行文件操作,使用`java.util`包下的数据结构辅助实现Huffman算法。 实现...

    Java用GZIP压缩解压文件.7z

    本篇文章将深入探讨如何在Java中使用GZIP进行文件的压缩和解压缩操作。 首先,我们要导入相关的Java.IO和Java.util.zip库,它们提供了对GZIP文件格式的支持: ```java import java.io.*; import java.util.zip.*; ...

    Java用GZIP压缩解压文件.rar

    总结,Java通过`java.util.zip`包提供的GZIPOutputStream和GZIPInputStream类,使得开发者能够方便地对文件进行GZIP压缩和解压缩。在实际项目中,根据具体需求选择合适的压缩和解压缩策略,可以有效提高存储和网络...

    Java用GZIP压缩解压文件

    总之,Java的`java.util.zip`包提供了强大的文件压缩和解压缩功能,能够方便地支持GZIP格式。开发者可以根据实际需求,结合流和缓冲技术,实现高效、可靠的文件处理。无论是在网络传输、数据存储还是其他场景中,...

    MiGz是一个多线程gzip兼容的压缩和解压缩可作为Java库和命令行工具

    MiGz是一个专门为Java开发者设计的强大工具,它提供了一个高效且多线程的解决方案,用于进行gzip兼容的压缩和解压缩操作。作为一个独立于平台的Java库,MiGz可以在任何支持Java的环境中运行,这得益于Java的“一次...

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

    通过这些测试,我们可以确保在实际应用中,使用`GZipUtils`进行GZIP压缩和解压缩操作的正确性和稳定性。 在理解了`GZipUtils.java`和`GZipUtilsTest.java`的基本结构后,开发者可以根据自己的需求进一步定制压缩...

    基于java的用GZIP压缩解压文件.zip

    总之,这个压缩包文件包含了使用Java进行GZIP压缩和解压缩的基本示例,是学习和理解Java文件压缩技术的好资源。通过学习和实践这些示例,开发者可以掌握如何在实际项目中高效地处理GZIP压缩文件。

    22、MapReduce使用Gzip压缩、Snappy压缩和Lzo压缩算法写文件和读取相应的文件

    Gzip是一种广泛使用的压缩算法,其压缩率较高,但压缩和解压缩速度相对较慢。在MapReduce中,通过设置`mapreduce.output.fileoutputformat.compress`为`true`和`mapreduce.output.fileoutputformat.compress.codec`...

    java自带压缩方式的性能比较

    在Java编程语言中,内置了多种压缩和解压缩的方式,如Gzip和Zip。这篇博客“java自带压缩方式的性能比较”可能详细分析了这两种压缩方法的效率和应用场景。通过提供的代码文件`CompressTestMain.java`、`GzipUtils....

    JAVA文件压缩与解压缩实践(源代码+论文)

    Java中的`GZIPOutputStream`和`GZIPInputStream`用于对文件进行GZIP压缩和解压缩。 4. **源代码实现**:实践中提供的源代码展示了如何使用Java API来实现文件和目录的压缩与解压缩。这可能包括读取文件,创建压缩流...

    Java用GZIP压缩解压文件.zip

    本教程将深入探讨如何在Java中利用GZIP进行文件的压缩和解压缩操作。 首先,让我们了解Java中的GZIPOutputStream和GZIPInputStream这两个核心类。GZIPOutputStream是用于压缩数据的流,它继承自...

    基于Java的用GZIP压缩解压文件.zip

    本主题将深入探讨如何使用Java来处理GZIP压缩和解压缩文件。 首先,我们要了解Java中的`java.util.zip.GZIPOutputStream`和`java.util.zip.GZIPInputStream`类,这两个类是Java标准库提供的用于GZIP压缩和解压缩的...

    java_gzip.rar_Compression_gzip_j2me gz_java压缩

    总结,Java提供的`java.util.zip`包使得在包括J2ME在内的各种平台上实现GZIP压缩和解压缩变得简单。无论是处理大文件还是小数据块,这个功能都有助于减少存储空间和提高数据传输效率。通过上述代码示例,你可以轻松...

    java源码:Java用GZIP压缩解压文件.rar

    在实际项目中,当需要处理大量数据,如日志文件或网络传输时,使用Java进行GZIP压缩和解压缩可以显著减少数据量,提高效率。 在文件名称列表`codefans.net`中,可能包含的是一个网站URL或者是一个文件名,如果这是...

    vc中用来解压缩Java中gzip压缩的数据的解压缩库

    在处理被gzip压缩的数据时,我们经常会遇到如何在VC(Visual C++)环境中进行解压缩的问题。本篇文章将详细介绍如何在VC中利用解压缩库来处理Java中gzip压缩的数据。 gzip是一种广泛使用的数据压缩格式,主要应用于...

    gzip实例 ----用GZIP进行简单压缩

    GZIP的API也被集成到许多编程语言中,如Python、Java、C++等,开发者可以方便地在代码中实现文件或数据流的压缩和解压缩。例如,在Python中,可以使用`gzip`模块来处理GZIP文件: ```python import gzip with gzip....

    java压缩和解压缩文件

    总的来说,Java中的压缩和解压缩功能非常强大且易于使用,无论是处理ZIP格式还是GZIP格式,都能满足大多数日常需求。在开发过程中,我们可以根据具体需求选择合适的工具,如需要处理单个文件时可以选择GZIP,而需要...

    压缩和解压缩源码

    在编程中,实现压缩和解压缩功能,开发者通常会使用现成的库,如在Python中,有`zlib`、`gzip`和`zipfile`等模块,它们提供了便捷的API来处理各种压缩格式。以`zipfile`为例,这个模块允许我们创建、读取、写入和...

Global site tag (gtag.js) - Google Analytics