这是一个我一直在苦苦挣扎一段时间的问题,谷歌搜索没有给我带来任何帮助。到此为止。
我有一个存档(archive.zip),我想在存档(newfile.txt)中创建一个文件并写一些文本。这是(煮沸的)代码:
Path archive = Paths.get("/home/user/archive.zip");
FileSystem fs = FileSystems.newFileSystem(archive, null);
Path fileInArchive = fs.getPath("/newfile.txt");
OutputStream output = Files.newOutputStream(fileInArchive, StandardOpenOption.WRITE, StandardOpenOption.CREATE, StandardOpenOption.TRUNCATE_EXISTING);
output.write("Testing!".getBytes());
output.flush();
// I've also tried putting:
// ((DeflaterOutputStream) output).finish();
output.close();
你可以看到它很简单。 Files.newOutputStream返回的流是ZipFileSystem.EntryOutputStream(它扩展了DeflaterOutputStream)。冲洗,完成和关闭流似乎没有任何影响。
奇怪的是,我使用类似的代码从档案中的文件中读取文本,效果很好。
任何建议或修正都将不胜感激! 感谢。
更新:显然这被标记为:Appending files to a zip file with Java的副本,但老实说,我没有看到原因,因为这是关于附加到zip文件的一般性问题,而且我的代码示例更具体。如果我错过了任何有用的东西,那么如果有人可以发表评论就会很棒。