【发布时间】:2021-09-18 19:43:49
【问题描述】:
我目前正在尝试使用 ZipOutputStream 创建 zipfile 并将其作为 ByteArrayOutputStream 返回。
但目前想知道如何为 zip 本身分配文件名。
现在它总是以我不想要的名称“application.zip”生成。
我尝试使用 FileOutputStream 分配它,但解码后它仍然使用默认命名,所以没有运气。
代码如下:
private static ByteArrayOutputStream convertZipToByte(
final String fname, final String content) {
try {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
FileOutputStream fos = new FileOutputStream("usethisinstead.zip");
baos.writeTo(fos);
final ZipOutputStream zos = new ZipOutputStream(baos);
ZipEntry entry = new ZipEntry(fname);
zos.putNextEntry(entry);
zos.write(content.getBytes());
zos.closeEntry();
return baos;
} catch (IOException ex) {
// throwing error ex here
}
}
【问题讨论】:
-
你的代码只是在写一个空文件,把
baos.writeTo(fos);移到最后,用try-with-resources关闭所有打开的流。
标签: java zip fileoutputstream zipoutputstream