In this post we’ll see how to compress and decompress a file in Java using GZIP format. Using GZIP you can only compress a single file not multiple files in a directory.
See the procedure of creating a tar archive to gzip multiple files in this post- GZIP Multiple Files in Java Creating Tar Archive
Java GZIP example- Compress and Decompress file
GZIP compression- For compressing a file GZIPOutputStream is used. You need to read a file using
InputStream and write it to the GZIPOutputStream to get a GZIP format file.
GZIP decompression- For decompressing a file GZIPInputStream is used. You need to read a file from
GZIPInputStream and write it to the output stream to get a decompressed file.
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.zip.GZIPInputStream;
import java.util.zip.GZIPOutputStream;
public class GzipFile {
public static void main(String[] args) {
String SOURCE_FILE = "/home/knpcode/Documents/knpcode/postend";
String GZIPPED_FILE = "/home/knpcode/Documents/knpcode/postend.gz";
String DECOMPRESSED_FILE = "/home/knpcode/Documents/knpcode/postend_decomp.txt";
GzipFile gzip = new GzipFile();
// call to GZIP compress
gzip.compressGZipFile(SOURCE_FILE, GZIPPED_FILE);
// call to GZIP decompress
gzip.deCompressGZipFile(GZIPPED_FILE, DECOMPRESSED_FILE);
}
public void compressGZipFile(String sourceFile, String gzipFile) {
FileInputStream fis = null;
FileOutputStream fos = null;
GZIPOutputStream gZIPOutputStream = null;
try {
fis = new FileInputStream(sourceFile);
fos = new FileOutputStream(gzipFile);
gZIPOutputStream = new GZIPOutputStream(fos);
byte[] buffer = new byte[1024];
int len;
while((len = fis.read(buffer)) > 0){
gZIPOutputStream.write(buffer, 0, len);
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally {
try {
if(fis != null) {
fis.close();
}
if(gZIPOutputStream != null) {
gZIPOutputStream.close();
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
public void deCompressGZipFile(String gzipFile, String destFile) {
FileInputStream fis = null;
FileOutputStream fos = null;
GZIPInputStream gZIPInputStream = null;
try {
fis = new FileInputStream(gzipFile);
gZIPInputStream = new GZIPInputStream(fis);
fos = new FileOutputStream(destFile);
byte[] buffer = new byte[1024];
int len;
while((len = gZIPInputStream.read(buffer)) > 0){
fos.write(buffer, 0, len);
}
}catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally {
try {
if(gZIPInputStream != null) {
gZIPInputStream.close();
}
if(fos != null) {
fos.close();
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
That's all for the topic GZIP File in Java - Compression And Decompression. If something is missing or you have something to share about the topic please write a comment.
You may also like
- Decompress And Untar Multiple Gzipped files in Java
- How to Zip Files in Java
- Java Program to Find Longest Palindrome in The Given String
- Java Program to Convert Numbers to Words
- HashSet Internal Implementation in Java
- Java Ternary Operator With Examples
- Shallow Copy Vs Deep Copy in Java Object Cloning
- Injecting List, Set or Map in Spring
No comments:
Post a Comment