import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.zip.GZIPInputStream;
import java.util.zip.GZIPOutputStream;
public class GzipUtil {
public static final int BUFFER = 1024;
public static final String EXT = ".gz";
//测试
public static void main(String[] args) throws Exception {
String str = "测试压缩";
byte[] bytes = str.getBytes("UTF-8");
if(bytes.length>10240){
//如果大于10k压缩
}
byte[] compress = GzipUtil.compress(bytes);
byte[] decompress = GzipUtil.decompress(compress);
System.out.println(new String(decompress,"UTF-8"));
GzipUtil.compress("d:/1.txt",false);
}
//压缩
public static byte[] compress(byte[] data) {
byte[] output = null;
try {
ByteArrayInputStream bais = new ByteArrayInputStream(data);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
// 压缩
compress(bais, baos);
output = baos.toByteArray();
baos.flush();
baos.close();
bais.close();
} catch (Exception e) {
}
return output;
}
//压缩文件
public static void compress(File file) throws Exception {
compress(file, true);
}
//压缩文件,是否删除压缩前文件
public static void compress(File file, boolean delete) throws Exception {
FileInputStream fis = new FileInputStream(file);
FileOutputStream fos = new FileOutputStream(file.getPath() + EXT);
compress(fis, fos);
fis.close();
fos.flush();
fos.close();
if (delete) {
boolean fal = file.delete();
}
}
public static void compress(InputStream is, OutputStream os)
throws Exception {
GZIPOutputStream gos = new GZIPOutputStream(os);
int count;
byte data[] = new byte[BUFFER];
while ((count = is.read(data, 0, BUFFER)) != -1) {
gos.write(data, 0, count);
}
gos.finish();
gos.flush();
gos.close();
}
public static void compress(String path) throws Exception {
compress(path, true);
}
//根据文件路径压缩文件
public static void compress(String path, boolean delete) throws Exception {
File file = new File(path);
compress(file, delete);
}
//解压缩
public static byte[] decompress(byte[] data) throws Exception {
ByteArrayInputStream bais = new ByteArrayInputStream(data);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
// 解压缩
decompress(bais, baos);
data = baos.toByteArray();
baos.flush();
baos.close();
bais.close();
return data;
}
public static void decompress(InputStream is, OutputStream os)
throws Exception {
GZIPInputStream gis = new GZIPInputStream(is);
int count;
byte data[] = new byte[BUFFER];
while ((count = gis.read(data, 0, BUFFER)) != -1) {
os.write(data, 0, count);
}
gis.close();
}
}
java实现文本和文件的压缩和解压缩
最新推荐文章于 2024-07-17 15:24:08 发布