Javaを使用してZIPファイルの圧縮を解除する際に問題が発生しました。この方法は以下の通りです。Java ZipFileクラスを使用したZIPファイルの圧縮解除
ファイルが圧縮解除されると、ファイル構造は正しいです。つまり、ディレクトリはZIPファイル内で正常ですが、出力ファイルの長さはゼロです。
ZIPファイルをチェックして、圧縮が正しいかどうか確認してください。
誰もが私が見逃している何か...
public static void unzip (File zipfile, File directory) throws IOException {
ZipFile zip = new ZipFile (zipfile);
Enumeration<? extends ZipEntry> entries = zip.entries();
while (entries.hasMoreElements()) {
ZipEntry entry = entries.nextElement();
File file = new File (directory, entry.getName());
if (entry.isDirectory()) {
file.mkdirs();
}
else {
file.getParentFile().mkdirs();
ZipInputStream in = new ZipInputStream (zip.getInputStream (entry));
OutputStream out = new FileOutputStream (file);
byte[] buffer = new byte[4096];
int readed = 0;
while ((readed = in.read (buffer)) > 0) {
out.write (buffer, 0, readed);
out.flush();
}
out.close();
in.close();
}
}
zip.close();
}
もっと何か...どうやら方法のgetInputStream(エントリー)はゼロバイトを返すを見れば、なぜ正確に知っているしないでください。
デバッグを試しましたか? in.read()呼び出しがいくつかのバイトを返すかどうか? – leonbloy
ループ内をフラッシュしないでください。 – EJP