Java 7 が提供するを使用して (既存の) zip ファイルの内容を正常に変更しましたFileSystem
が、この方法で新しい zip ファイルを作成しようとすると失敗し、次のようなエラー メッセージが表示されます"zip END header not found"
。私がやっている方法では、最初にFiles.createFile
完全に空のファイルであるファイル ( ) を作成し、次にそのファイル システムにアクセスしようとしましたが、ファイルが空であるため、zip 内のヘッダーを見つけることができません。質問は、この方法を使用して完全に空の新しい zip ファイルを作成する方法はありますか?; 私が検討したハックは、空の新しいものを追加することですZipEntry
zipファイルに変換し、その新しい空のファイルを使用してそれに基づいてファイルシステムを作成しましたが、オラクルの人たちがnioとファイルシステムでこれを行うためのより良い(より簡単な)方法を実装したと本当に思いたいです...
これは私のコードです(ファイルシステムの作成時にエラーが表示されます):
if (!zipLocation.toFile().exists()) {
if (creatingFile) {
Files.createFile(zipLocation);
}else {
return false;
}
} else if (zipLocation.toFile().exists() && !replacing) {
return false;
}
final FileSystem fs = FileSystems.newFileSystem(zipLocation, null);
.
.
.
zipLocation
パス
creatingFile
はブール値です
回答: 私の特定のケースでは、パスにスペースが含まれているため、与えられた回答が適切に機能しませんでした。したがって、やりたくない方法で行う必要があります。
Files.createFile(zipLocation);
ZipOutputStream out = new ZipOutputStream(
new FileOutputStream(zipLocation.toFile()));
out.putNextEntry(new ZipEntry(""));
out.closeEntry();
out.close();
与えられた答えが間違っているという意味ではありません。私の特定のケースではうまくいきませんでした