Java:使用Path的ZipFile

时间:2016-07-24 13:41:04

标签: java nio nio2 jimfs

我在虚拟文件系统(jimfs)上有一个Path个zip文件,我需要使用ZipFile打开这个zip文件。

ZipFile中没有构造函数可以Path作为参数,只有File

但是,我无法使用Path File(path.toFile())创建,因为我得到UnsupportedOperationException。如何使用ZipFile打开我的zip文件?或者也许还有其他方法可以处理不在默认文件系统上的zip文件?

2 个答案:

答案 0 :(得分:3)

看看this question - 有一个代码可以从zip文件的内容创建一个新的文件系统:

  • 采取拉链路径
  • 将路径转换为URI
  • 为URI
  • 创建新的文件系统

答案 1 :(得分:1)

ZipFile类仅限于文件系统中的文件。

另一种方法是使用ZipInputStream代替。使用

InputStream创建Path
Path path = ...
InputStream in = Files.newInputStream(path, openOptions)

并使用InputStream创建ZipInputStream。这种方式应该按预期工作:

ZipInputStream zin = new ZipInputStream(in)