我对Java完全陌生,我决定通过在其中做一个小项目来学习它。我需要使用 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 KB 的文件,而该文件最多应该是 11 个字节(因为这里的内容是 11 个字节。)。我认为问题在于我初始化压缩为 100 字节的字节数组的方式,但我不知道压缩后的数据会有多大。我在这里做错了什么?我该如何解决?