我已经使用 java 7 提供的成功修改了(现有)zip 文件的内容FileSystem
,但是当我尝试通过这种方法创建一个新的 zip 文件时它失败了,错误消息显示:"zip END header not found"
,这是合乎逻辑的,因为我这样做的方式是,首先创建一个完全空的文件Files.createFile
(问题是有没有办法使用这种方法创建一个完全空的新 zip 文件?我考虑过的黑客是添加一个空的新的ZipEntry
到一个 zip 文件,然后使用该新的空文件来创建基于它的文件系统,但我真的想认为 oracle 的人用 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();
这并不意味着给定的答案是错误的,它只是不适用于我的特定情况