我正在尝试通过安装了cygwin的Windows机器上的java程序发出zip命令。我在java代码中给出了cmd以下:
zip -r C:/Folder.zip C:/ Folder
它给我错误 - zip错误:zip I / O错误:没有这样的文件或目录,临时文件失败(C:/ zibIIBYC)
但是C:/ Folder存在。我不确定什么是C:/ zibIIBYC?
当我在cmd下面尝试时:
zip -r C:/cygwin64/Folder.zip C:/ Folder
然后Folder.zip在C:/ cygwin64中创建,但是为空。
任何建议都会有所帮助。
答案 0 :(得分:0)
这并不能直接回答您的问题,但您不需要Cygwin或任何外部流程来压缩目录:
public void zip(Path zipFile,
Path directoryToZip)
throws IOException {
try (final ZipOutputStream zip = new ZipOutputStream(
new BufferedOutputStream(Files.newOutputStream(zipFile)))) {
Files.walkFileTree(directoryToZip, new SimpleFileVisitor<Path>() {
@Override
public FileVisitResult visitFile(Path file,
BasicFileAttributes attr)
throws IOException {
ZipEntry entry = new ZipEntry(
directoryToZip.relativize(file).toString());
entry.setSize(attr.size());
entry.setTime(attr.lastModifiedTime().toMillis());
zip.putNextEntry(entry);
Files.copy(file, zip);
zip.closeEntry();
return FileVisitResult.CONTINUE;
}
});
}
}