私は、zipを抽出し、その内容を文字列に変換してコンソールに出力する以下のJavaクラスを持っています。
問題は、zip 内に存在するファイルが最大 80KB の場合です。コンテンツ全体が表示されません (データの 3/4 のみが文字列に変換され、コンソールに表示されます)。
次に、以下のコードはヌル/スペースを間に導入しています。また、ファイルサイズが小さい場合は ~1KB です。
以下のコードで何が間違っていますか。
public static void main(String[] args) throws Exception {
byte[] buf = new byte[1024];
final int BUFFER = 1024;
String fName = "c:\\DOC00001.zip";
ZipInputStream zinstream = new ZipInputStream(
new FileInputStream(fName));
ZipEntry zentry = zinstream.getNextEntry();
while (zentry != null) {
byte data[] = new byte[BUFFER];
ByteArrayOutputStream out = new ByteArrayOutputStream();
while ((zinstream.read(data, 0, BUFFER)) != -1) {
out.write(data);
}
InputStream is = new ByteArrayInputStream(out.toByteArray());
StringWriter writer = new StringWriter();
IOUtils.copy(is, writer, "UTF-8");
String response = writer.toString();
System.out.println(response);
zentry = zinstream.getNextEntry();
}
zinstream.close();
}