私はzip拡張子で圧縮ファイルを受け取りました。 Windowsエクスプローラを使用して直接開くことはできません。 私は7Zipを使用してそれを抽出することができますが、それは何らかのエラーを投げますが、ファイルはまだ期待どおりに圧縮解除されます。 私はwinrarを使用してそれを抽出できます。エラーはありません。ファイルは期待どおりに圧縮解除されています。空のフォルダjava.util.zip/zip4jを使用して解凍しようとしたとき
私はjava.util.unzip/zip4jを使って解凍しようとしました。
java.util.zipコード:上記のコードで
public static void unzip(String zipFilePath,
String destDirectory) throws IOException {
File destDir = new File(destDirectory);
if (!destDir.exists()) {
destDir.mkdir();
}
ZipInputStream zipIn =
new ZipInputStream(new FileInputStream(zipFilePath));
ZipEntry entry = zipIn.getNextEntry();
// iterates over entries in the zip file
while (entry != null) {
String filePath = destDirectory + File.separator + entry.getName();
if (!entry.isDirectory()) {
// if the entry is a file, extracts it
extractFile(zipIn, filePath);
} else {
// if the entry is a directory, make the directory
File dir = new File(filePath);
dir.mkdir();
}
zipIn.closeEntry();
entry = zipIn.getNextEntry();
}
zipIn.close();
}
/**
* Extracts a zip entry (file entry)
* @param zipIn
* @param filePath
* @throws IOException
*/
private static void extractFile(ZipInputStream zipIn,
String filePath) throws IOException {
BufferedOutputStream bos =
new BufferedOutputStream(new FileOutputStream(filePath));
byte[] bytesIn = new byte[BUFFER_SIZE];
int read = 0;
while ((read = zipIn.read(bytesIn)) != -1) {
bos.write(bytesIn, 0, read);
}
bos.close();
}
、エラーは発生しません、しかし、私は空のフォルダを取得します。
zip4jコード:
String zipFilePath = "C:\\Juw\\JR\\file\\output\\020030214112016.zip";
//String zipFilePath = "C:\\Juw\\JR\\file\\output\\myFile.zip";
String destDirectory = "C:\\Juw\\JR\\file\\output\\targetUnzip";
try {
ZipFile zipFile = new ZipFile(zipFilePath);
zipFile.extractAll(destDirectory);
} catch (Exception ex) {
ex.printStackTrace();
}
と例外があります: net.lingala.zip4j.exception.ZipException:見つからないヘッダをジップが。おそらくzipファイルではない
もし私がwinrarを使ってファイルを解凍しようとしたら、私はzip機能で構築されたウィンドウを使って圧縮しました。私はコードを使用してそれを解凍することができます。私の人とクライアントの間でサイズが違う。私のものは508kbで、もう一つは649kbです。
質問は: - 強力なWinrarを利用するJavaライブラリはありますか?圧縮ファイルをエラーなく抽出できますか? - このケースを解決するためのベストプラクティスは何ですか?
多くのありがとうございました:)
"このケースを解決するためのベストプラクティスは何ですか?" - クライアントに有効な.zipファイルを提供するよう依頼します。 – JimmyB
こんにちはJimmyB、zipファイルが有効ではないと思われますか? Winrarは問題なく抽出することができるからです。それはクライアントが別の標準的なジップを持つサードパーティ製のアプリケーションを使用してそれを圧縮する可能性はありますか?または他のOS(ウィンドウではない)からですか? – cumibulat
Windowsと7zipとJava libが失敗したりエラーが報告された場合、ファイルが何らかの形で完全に有効でない可能性があると私は考えています。たぶんzipファイルではないかもしれませんが、.zipという名前のファイルに書かれた別のフォーマットかもしれません。ファイル名に依存せずにファイルが実際にどのようなものかを判断するツールは、それをまだ解凍できるかもしれません。 – JimmyB