转自: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库。pako是基于zlib库的一个轻量级实现,它在浏览器和Node.js环境中都能运行...
在本文中,我们将深入探讨如何使用Java实现GZIP压缩和解压缩文件的源码。 首先,我们需要引入Java的`java.util.zip`包,这个包包含了处理GZIP和其他压缩格式所需的类。在Java中,`GZIPOutputStream`和`...
7. **HuffmanTest**:这个文件名可能是一个测试类,用于实现上述的压缩和解压缩过程。在Java中,可以使用`java.io`和`java.nio`包下的类进行文件操作,使用`java.util`包下的数据结构辅助实现Huffman算法。 实现...
本篇文章将深入探讨如何在Java中使用GZIP进行文件的压缩和解压缩操作。 首先,我们要导入相关的Java.IO和Java.util.zip库,它们提供了对GZIP文件格式的支持: ```java import java.io.*; import java.util.zip.*; ...
总结,Java通过`java.util.zip`包提供的GZIPOutputStream和GZIPInputStream类,使得开发者能够方便地对文件进行GZIP压缩和解压缩。在实际项目中,根据具体需求选择合适的压缩和解压缩策略,可以有效提高存储和网络...
总之,Java的`java.util.zip`包提供了强大的文件压缩和解压缩功能,能够方便地支持GZIP格式。开发者可以根据实际需求,结合流和缓冲技术,实现高效、可靠的文件处理。无论是在网络传输、数据存储还是其他场景中,...
MiGz是一个专门为Java开发者设计的强大工具,它提供了一个高效且多线程的解决方案,用于进行gzip兼容的压缩和解压缩操作。作为一个独立于平台的Java库,MiGz可以在任何支持Java的环境中运行,这得益于Java的“一次...
通过这些测试,我们可以确保在实际应用中,使用`GZipUtils`进行GZIP压缩和解压缩操作的正确性和稳定性。 在理解了`GZipUtils.java`和`GZipUtilsTest.java`的基本结构后,开发者可以根据自己的需求进一步定制压缩...
总之,这个压缩包文件包含了使用Java进行GZIP压缩和解压缩的基本示例,是学习和理解Java文件压缩技术的好资源。通过学习和实践这些示例,开发者可以掌握如何在实际项目中高效地处理GZIP压缩文件。
Gzip是一种广泛使用的压缩算法,其压缩率较高,但压缩和解压缩速度相对较慢。在MapReduce中,通过设置`mapreduce.output.fileoutputformat.compress`为`true`和`mapreduce.output.fileoutputformat.compress.codec`...
在Java编程语言中,内置了多种压缩和解压缩的方式,如Gzip和Zip。这篇博客“java自带压缩方式的性能比较”可能详细分析了这两种压缩方法的效率和应用场景。通过提供的代码文件`CompressTestMain.java`、`GzipUtils....
Java中的`GZIPOutputStream`和`GZIPInputStream`用于对文件进行GZIP压缩和解压缩。 4. **源代码实现**:实践中提供的源代码展示了如何使用Java API来实现文件和目录的压缩与解压缩。这可能包括读取文件,创建压缩流...
本教程将深入探讨如何在Java中利用GZIP进行文件的压缩和解压缩操作。 首先,让我们了解Java中的GZIPOutputStream和GZIPInputStream这两个核心类。GZIPOutputStream是用于压缩数据的流,它继承自...
本主题将深入探讨如何使用Java来处理GZIP压缩和解压缩文件。 首先,我们要了解Java中的`java.util.zip.GZIPOutputStream`和`java.util.zip.GZIPInputStream`类,这两个类是Java标准库提供的用于GZIP压缩和解压缩的...
总结,Java提供的`java.util.zip`包使得在包括J2ME在内的各种平台上实现GZIP压缩和解压缩变得简单。无论是处理大文件还是小数据块,这个功能都有助于减少存储空间和提高数据传输效率。通过上述代码示例,你可以轻松...
在实际项目中,当需要处理大量数据,如日志文件或网络传输时,使用Java进行GZIP压缩和解压缩可以显著减少数据量,提高效率。 在文件名称列表`codefans.net`中,可能包含的是一个网站URL或者是一个文件名,如果这是...
在处理被gzip压缩的数据时,我们经常会遇到如何在VC(Visual C++)环境中进行解压缩的问题。本篇文章将详细介绍如何在VC中利用解压缩库来处理Java中gzip压缩的数据。 gzip是一种广泛使用的数据压缩格式,主要应用于...
GZIP的API也被集成到许多编程语言中,如Python、Java、C++等,开发者可以方便地在代码中实现文件或数据流的压缩和解压缩。例如,在Python中,可以使用`gzip`模块来处理GZIP文件: ```python import gzip with gzip....
总的来说,Java中的压缩和解压缩功能非常强大且易于使用,无论是处理ZIP格式还是GZIP格式,都能满足大多数日常需求。在开发过程中,我们可以根据具体需求选择合适的工具,如需要处理单个文件时可以选择GZIP,而需要...
在编程中,实现压缩和解压缩功能,开发者通常会使用现成的库,如在Python中,有`zlib`、`gzip`和`zipfile`等模块,它们提供了便捷的API来处理各种压缩格式。以`zipfile`为例,这个模块允许我们创建、读取、写入和...