我對Java完全陌生,我決定通過做一個小項目來學習它。我需要使用zlib壓縮一些字符串並將其寫入文件。但是,文件變得太大了。下面是代碼示例:Zlib壓縮的尺寸太大了
String input = "yasar\0yasar"; // test input. Input will have null character in it.
byte[] compressed = new byte[100]; // hold compressed content
Deflater compresser = new Deflater();
compresser.setInput(input.getBytes());
compresser.finish();
compresser.deflate(compressed);
File test_file = new File(System.getProperty("user.dir"), "test_file");
try {
if (!test_file.exists()) {
test_file.createNewFile();
}
try (FileOutputStream fos = new FileOutputStream(test_file)) {
fos.write(compressed);
}
} catch (IOException e) {
e.printStackTrace();
}
這寫一個1千字節文件,而該文件應該最多是11個字節(因爲它的內容是在這裏11個字節)。我認爲問題在於我將字節數組壓縮爲100字節的方式,但我不知道提前將會有多大的壓縮數據。我在這裏做錯了什麼?我該如何解決它?
使用'resultLength'作爲[文檔】(http://docs.oracle.com/javase/7/docs/api/java/util/zip/Deflater.html)一樣。 – zapl
@zapl在壓縮完成後給出壓縮數據的長度。我需要在初始化之前初始化輸出數組,否則我得到一個錯誤:'變量壓縮可能沒有被初始化' – yasar
@HighPerformanceMark我不知道如何檢查。我在Windows 7(64位) – yasar