私は Java にまったく慣れていないので、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 キロバイトのファイルを書き込みますが、ファイルは最大で 11 バイトでなければなりません (ここでは内容が 11 バイトであるため)。問題は、100バイトに圧縮されたバイト配列を初期化する方法にあると思いますが、圧縮されたデータが事前にどのくらいの大きさになるかわかりません。ここで何が間違っていますか?どうすれば修正できますか?