📄 gziputil.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 + -