加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – VFS上的Hello world示例:从头开始创建一个zip文件

发布时间:2020-12-14 19:19:34 所属栏目:Java 来源:网络整理
导读:我想用Commons VFS2库创建一个zip文件.我知道如何在使用文件前缀时复制文件但是没有实现zip文件的写入和读取. fileSystemManager.resolveFile(“path来到这里”) 当我尝试路径zip时方法失败:/some/file.zip当file.zip是一个不存在的zip文件时.我可以解析现

我想用Commons VFS2库创建一个zip文件.我知道如何在使用文件前缀时复制文件但是没有实现zip文件的写入和读取.

fileSystemManager.resolveFile(“path来到这里”) – 当我尝试路径zip时方法失败:/some/file.zip当file.zip是一个不存在的zip文件时.我可以解析现有文件,但不存在的新文件失败.

那么如何创建新的zip文件呢?我不能使用createFile(),因为它不受支持,我无法在调用之前创建FileObject.

通常的方法是使用该resolveFile创建FileObject,然后为该对象调用createFile.

最佳答案
我需要的答案是以下代码片段:

// Create access to zip.
FileSystemManager fsManager = VFS.getManager();
FileObject zipFile = fsManager.resolveFile("file:/path/to/the/file.zip");
zipFile.createFile();
ZipOutputStream zos = new ZipOutputStream(zipFile.getContent().getOutputStream());

// add entry/-ies.
ZipEntry zipEntry = new ZipEntry("name_inside_zip");
FileObject entryFile = fsManager.resolveFile("file:/path/to/the/sourcefile.txt");
InputStream is = entryFile.getContent().getInputStream();

// Write to zip.
byte[] buf = new byte[1024];
zos.putNextEntry(zipEntry);
for (int readNum; (readNum = is.read(buf)) != -1;) {
   zos.write(buf,readNum);
}

在此之后你需要关闭流,它的工作原理!

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读