从Filechannels创建Zip存档

时间:2017-04-19 21:35:04

标签: java nio

我正在尝试将文件添加到zip存档中。我想做这样的事情

public void zipFile(Path fileToZip, Path zipFile) {
    ZipOutputStream zipOut = new ZipOutputStream(Files.newOutputStream(zipFile, CREATE, APPEND));
    FileChannel outputChannel = new FileOutputStream(zipOut).getChannel() //How to go from zipoutputstream to FileChannel...
    FileChannel inputChannel = FileChannel.open(zipFile, READ)
    ZipEntry zipEntry = new ZipEntry(fileToZip.toString());
    zipOut.putNextEntry(zipEntry);

    inputChannel.transferTo (0, inputChannel.size(), outputChannel);

    outputChannel.close();
    inputChannel.close();
}

但ZipOutputStream没有像FileOutputStream那样的getChannel()。如何使用频道创建zip文件?

2 个答案:

答案 0 :(得分:1)

您可以使用Channels.newChannel方法将任何OutputStream转换为频道。

答案 1 :(得分:0)

事实证明,这很容易做到。不要使用频道或任何东西。只需创建一个zipfilesystem并将文件复制过来。

http://docs.oracle.com/javase/7/docs/technotes/guides/io/fsp/zipfilesystemprovider.html