我正在尝试将字节数组中的文件名称“ content”写入现有的zip文件中。
到目前为止,我已经设法编写一个文本文件\将特定文件添加到同一zip中。我想做的是同一件事,只是代替一个文件,一个代表文件的字节数组。我正在编写此程序,以便它能够在服务器上运行,因此我无法在某处创建物理文件并将其添加到zip中,所有这些都必须在内存中进行。
到目前为止,这是我的代码,没有“将字节数组写入文件”部分。
public static void test(File zip, byte[] toAdd) throws IOException {
Map<String, String> env = new HashMap<>();
env.put("create", "true");
Path path = Paths.get(zip.getPath());
URI uri = URI.create("jar:" + path.toUri());
try (FileSystem fs = FileSystems.newFileSystem(uri, env)) {
Path nf = fs.getPath("avlxdoc/content");
try (BufferedWriter writer = Files.newBufferedWriter(nf, StandardOpenOption.CREATE)) {
//write file from byte[] to the folder
}
}
}
(我尝试使用BufferedWriter,但似乎没有用...)
谢谢!
不要使用ABufferedWriter
来写二进制内容!使AWriter
写入文本内容。
改用它:
final Path zip = file.toPath();
final Map<String, ?> env = Collections.emptyMap();
final URI uri = URI.create("jar:" + zip.toUri());
try (
final FileSystem zipfs = FileSystems.newFileSystem(uri, env);
) {
Files.write(zipfs.getPath("into/zip"), buf,
StandardOpenOption.CREATE, StandardOpenOption.APPEND);
}
(注意:这APPEND
是一个猜测;如果文件已经存在,从您的问题开始,您希望添加它;默认情况下,内容将被覆盖)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句