【发布时间】:2022-01-02 04:14:58
【问题描述】:
我有一个仅包含文件而不包含目录的 zip 文件。我想仅使用功能 Java 将文件解压缩到一个目录中。
下面的代码按预期工作并将文件解压缩到目标文件夹中。
public static void unzip(Path source, Path target) throws IOException {
try (ZipInputStream zis = new ZipInputStream(new FileInputStream(source.toFile()))) {
ZipEntry zipEntry = zis.getNextEntry();
while (zipEntry != null) {
Path targetDirResolved = target.resolve(zipEntry.getName());
Path normalizePath = targetDirResolved.normalize();
if (!normalizePath.startsWith(target)) {
throw new IOException("Bad zip entry: " + zipEntry.getName());
}
Files.copy(zis, normalizePath, StandardCopyOption.REPLACE_EXISTING);
zipEntry = zis.getNextEntry();
}
zis.closeEntry();
}
}
我想实现与上述相同的功能,但使用更实用的方法。
我最初的想法是将 while 循环转换为 IntStream.range(0, ).... 之类的东西,但 zip 文件中的条目数未知。
有什么想法吗?
【问题讨论】:
标签: java functional-programming