⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gziputil.java

📁 运用java开发工具
💻 JAVA
字号:
package javazip.util;

import java.util.ArrayList;
import java.io.*;
import java.util.zip.*;
import javazip.base.*;
import javazip.base.FileInfo;

/**
 * 实现gz的压缩与解压缩 目前只找到了压缩一个文件
 * 
 * @author dragon
 * 
 */
public class GzipUtil extends CompressUtil {

	/**
	 * Gzip压缩文件的方法 注意:只能压缩一个文件 压缩文件的文件名为:原文件名+.gz
	 * 
	 * @see javazip.util.CompressUtil#compressFile(java.util.ArrayList,
	 *      java.lang.String)
	 */
	public void compressFile(ArrayList fileList, String target) {
		try {
			File f = (File) fileList.get(0);
			/* 打开需压缩文件作为文件输入流 */
			FileInputStream fin = new FileInputStream(f);
			/* 建立压缩文件输出流 */
			target = generatePath(target, f);
			FileOutputStream fout = new FileOutputStream(target);
			/* 建立gzip压缩输出流 */
			GZIPOutputStream gzout = new GZIPOutputStream(fout);
			byte[] buf = new byte[1024];/* 设定读入缓冲区尺寸 */
			int num;
			while ((num = fin.read(buf)) != -1) {
				gzout.write(buf, 0, num);
			}
			gzout.close();/* !!!关闭流,必须关闭所有输入输出流.保证输入输出完整和释放系统资源. */
			fout.close();
			fin.close();
		} catch (IOException e) {
			System.out.println(e);
		}
	}
	/**
	 * 
	 */
	public void compressFile(File fileList[], String target)
	{
		try {
			File f = fileList[0];
			/* 打开需压缩文件作为文件输入流 */
			FileInputStream fin = new FileInputStream(f);
			/* 建立压缩文件输出流 */
			target = generatePath(target, f);
			FileOutputStream fout = new FileOutputStream(target);
			/* 建立gzip压缩输出流 */
			GZIPOutputStream gzout = new GZIPOutputStream(fout);
			byte[] buf = new byte[1024];/* 设定读入缓冲区尺寸 */
			int num;
			while ((num = fin.read(buf)) != -1) {
				gzout.write(buf, 0, num);
			}
			gzout.close();/* !!!关闭流,必须关闭所有输入输出流.保证输入输出完整和释放系统资源. */
			fout.close();
			fin.close();
		} catch (IOException e) {
			System.out.println(e);
		}
	}
	/**
	 * Gzip解压缩文件的方法
	 * 
	 * @see javazip.util.CompressUtil#extractFile(java.lang.String,
	 *      java.lang.String)
	 */
	public void extractFile(String source, String target) {
		try {
			/* 建立gzip压缩文件输入流 */
			FileInputStream fin = new FileInputStream(source);
			/* 建立gzip解压工作流 */
			GZIPInputStream gzin = new GZIPInputStream(fin);
			target = getFileName(target, new File(source));
			/* 建立解压文件输出流 */
			FileOutputStream fout = new FileOutputStream(target);
			byte[] buf = new byte[1024];
			int num;
			while ((num = gzin.read(buf, 0, buf.length)) != -1) {
				fout.write(buf, 0, num);
			}
			gzin.close();
			fout.close();
			fin.close();
		} catch (IOException e) {
			System.out.println(e);
		}
	}

	/**
	 * 生成保存文件的路径
	 * 
	 * @param target
	 * @param source
	 * @return
	 */
	private String generatePath(String target, File source) {
		File temp = new File(target);
		target = temp.getParent();
		target = target + source.getName() + ".gz";
		System.out.println(target);
		return target;
	}

	/**
	 * 取得要解压缩的文件名
	 * 
	 * @return
	 */
	private String getFileName(String target, File source) {
		File t = new File(target);
		if (!t.isDirectory()) {
			target = t.getParent();
		}
		target = target
				+ source.getName().substring(0, source.getName().length() - 3);
		System.out.println(target);
		return target;
	}
	/**
	 * 
	 */
	public Long getOriginalLength(File f)
	{
		return null;
	}
	
	/**
	 * 
	 */
	public boolean testFile(File f)
	{
		return true;
	}
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		GzipUtil gzip = new GzipUtil();
		ArrayList a = new ArrayList();
		a.add(new File("F:\\sevenzip.exe"));
		gzip.compressFile(a, "D:\\sevenzip.exe.gz");
		gzip.extractFile("D:\\sevenzip.exe.gz", "D:\\");
	}

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -