使用java實現網絡傳輸數據的壓縮(來源網絡)
import java.io.*;
import java.util.zip.*;
public class GZIProc {
public static void main(String[] args) {
byte[] b1 ,b2 = null;
try {
BufferedInputStream in = new BufferedInputStream( new FileInputStream(args[0]));
ByteArrayOutputStream bout = new ByteArrayOutputStream();
GZIPOutputStream out = new GZIPOutputStream(bout);
ObjectOutputStream oout = new ObjectOutputStream(out);
// 讀取源文件
b1 = new byte[in.available()];
in.read(b1,0,b1.length);
System.out.println( "壓縮前:\n " + new String(b1));
// 壓縮
//out.write(b1,0, b1.length);
oout.writeObject(new String(b1));
oout.flush();
oout.close();
// 讀取壓縮字節流
b2 = bout.toByteArray();
System.out.println( "壓縮后:\n " + new String(b2));
// 關閉數據流
in.close();
// 解壓
ObjectInputStream in2 = new ObjectInputStream(new GZIPInputStream(new ByteArrayInputStream(b2)));
byte[] b3 = ((String)in2.readObject()).getBytes();
in2.close();
// 輸出
System.out.println( new String(b3));
} catch(Exception e) {
e.printStackTrace();
}
}
}
import java.util.zip.*;
public class GZIProc {
public static void main(String[] args) {
byte[] b1 ,b2 = null;
try {
BufferedInputStream in = new BufferedInputStream( new FileInputStream(args[0]));
ByteArrayOutputStream bout = new ByteArrayOutputStream();
GZIPOutputStream out = new GZIPOutputStream(bout);
ObjectOutputStream oout = new ObjectOutputStream(out);
// 讀取源文件
b1 = new byte[in.available()];
in.read(b1,0,b1.length);
System.out.println( "壓縮前:\n " + new String(b1));
// 壓縮
//out.write(b1,0, b1.length);
oout.writeObject(new String(b1));
oout.flush();
oout.close();
// 讀取壓縮字節流
b2 = bout.toByteArray();
System.out.println( "壓縮后:\n " + new String(b2));
// 關閉數據流
in.close();
// 解壓
ObjectInputStream in2 = new ObjectInputStream(new GZIPInputStream(new ByteArrayInputStream(b2)));
byte[] b3 = ((String)in2.readObject()).getBytes();
in2.close();
// 輸出
System.out.println( new String(b3));
} catch(Exception e) {
e.printStackTrace();
}
}
}
posted on 2011-04-17 15:59 小一敗涂地 閱讀(3468) 評論(0) 編輯 收藏 所屬分類: java語言相關 、android+移動開發 、jsp,servlet相關