欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

java 解析压缩文件-gzip

程序员文章站 2024-02-29 09:41:52
...
package impl;

import inter.AbstractUnCompressService;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.util.zip.GZIPInputStream;

import org.apache.tools.tar.TarEntry;
import org.apache.tools.tar.TarInputStream;

/**
 * This file is used to uncompress gz compress file
 * @author Jacky.Dong
 *
 */
public class GzUnCompressServiceImpl extends AbstractUnCompressService {

	private static final String SUFFIX_TAR_GZ = ".tar.gz";

	@Override
	public void unCompressFolder(String folder) {
		// TODO Auto-generated method stub

	}

	@Override
	public void unCompressFile(String inputFilePath, String outputDir)
			throws IOException {

		File inputFile = new File(inputFilePath);
		if (outputDir == null) {
			outputDir = inputFile.getPath().replace(SUFFIX_TAR_GZ, "")
					+ File.separator;
		}

		try {
			// create a gzip input stream
			TarInputStream tarIn = new TarInputStream(new GZIPInputStream(
					new FileInputStream(inputFile)));

			TarEntry entry = null;
			while ((entry = tarIn.getNextEntry()) != null) {
				// if entry is a directory ,we should create a new directory
				if (entry.isDirectory()) {
					createDirectory(outputDir, entry.getName());// 创建空目录
				} else {
					// if entry is a file ,we should add this file to related
					// folder and write content to the file
					File tmpFile = new File(outputDir + File.separator
							+ entry.getName());
					createDirectory(tmpFile.getParent() + File.separator, null);
					OutputStream out = null;

					try {
						out = new FileOutputStream(tmpFile);
						int length = 0;
						byte[] b = new byte[BUFFEREDSIZE];

						while ((length = tarIn.read(b)) != -1) {
							out.write(b, 0, length);
						}
					} catch (IOException ex) {
						throw ex;
					} finally {
						if (out != null)
							out.close();
					}

				}
			}
		} catch (Exception ex) {
			System.err.println(ex.toString());
		}
	}

}

 

相关标签: java gzip