[英]compress and decompress String using DeflaterOutputStream and InflaterInputStream in java
我需要在文件上保存一個字符串,我正在使用DeflaterOutputStream進行壓縮。 當我嘗試解壓縮時,我無法獲得原始字符串。 我得到一個未清除的符號。 她是我的代碼:
public static void decompress() throws Exception {
InputStream in=new FileInputStream("E:/codes.txt");
InflaterInputStream ini = new InflaterInputStream(in);
ByteArrayOutputStream bout =new ByteArrayOutputStream(512);
int b;
while ((b = in.read()) != -1) {
bout.write(b);
}
ini.close();
bout.close();
String s=new String(bout.toByteArray());
System.out.print(s);
}
public static void compressData(byte[] data) throws Exception {
OutputStream out=new FileOutputStream("E:/test.txt");
Deflater d = new Deflater();
DeflaterOutputStream dout = new DeflaterOutputStream(out, d);
dout.write(data);
dout.close();
}
public static void main(String[] args) throws Exception {
compressData("My name is Motasem".getBytes());
decompress();
}
我不知道問題究竟在哪里。 我雖然是將字節數組轉換為String但我嘗試了它並且它正在工作。 你可以訪問這個網站http://www.mkyong.com/java/how-do-convert-byte-array-to-string-in-java/
你有一個簡單但很難注意到的bug。 您實際上並沒有使用InflaterInputStream來讀取數據。 你只是打開和關閉它。 您閱讀該文件的代碼是:
while ((b = in.read()) != -1) {
應該
while ((b = ini.read()) != -1) {
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.