zip命令在java代码中无法正常工作

时间:2016-02-11 17:43:09

标签: java cygwin zip

我正在尝试通过安装了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中创建,但是为空。

任何建议都会有所帮助。

1 个答案:

答案 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;
            }
        });
    }
}