首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在使用zip4j提取zip4j文件时,我可以跳过符号链接吗?

在使用zip4j提取zip4j文件时,我可以跳过符号链接吗?
EN

Stack Overflow用户
提问于 2021-01-14 18:02:08
回答 1查看 166关注 0票数 0

我使用zip4j库提取包含Windows下符号链接的zip文件。

我的代码如下:

代码语言:javascript
复制
final String path = App.class.getResource("/file.zip").getPath();
final ZipFile zipFile = new ZipFile(path);
final Path tempDirectory = Files.createTempDirectory("tmp");
zipFile.extractAll(tempDirectory.toString());

(在https://github.com/maikelsteneker/zip4j-symlink中可以获得最小的工作示例)

这个zip文件包含一个符号链接。创建这样的符号链接需要Windows中的管理员权限。因此,出现以下异常:

代码语言:javascript
复制
Exception in thread "main" net.lingala.zip4j.exception.ZipException: java.nio.file.FileSystemException: C:\Users\Maikel\AppData\Local\Temp\tmp10742489646321434610\symlink.txt: A required privilege is not held by the client.

        at net.lingala.zip4j.tasks.AsyncZipTask.performTaskWithErrorHandling(AsyncZipTask.java:53)
        at net.lingala.zip4j.tasks.AsyncZipTask.execute(AsyncZipTask.java:40)
        at net.lingala.zip4j.ZipFile.extractAll(ZipFile.java:436)
        at zip4j.symlink.App.main(App.java:17)
Caused by: java.nio.file.FileSystemException: C:\Users\Maikel\AppData\Local\Temp\tmp10742489646321434610\symlink.txt: A required privilege is not held by the client.

        at java.base/sun.nio.fs.WindowsException.translateToIOException(WindowsException.java:92)
        at java.base/sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:103)
        at java.base/sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:108)
        at java.base/sun.nio.fs.WindowsFileSystemProvider.createSymbolicLink(WindowsFileSystemProvider.java:585)
        at java.base/java.nio.file.Files.createSymbolicLink(Files.java:1058)
        at net.lingala.zip4j.tasks.AbstractExtractFileTask.createSymLink(AbstractExtractFileTask.java:108)
        at net.lingala.zip4j.tasks.AbstractExtractFileTask.extractFile(AbstractExtractFileTask.java:61)
        at net.lingala.zip4j.tasks.ExtractAllFilesTask.executeTask(ExtractAllFilesTask.java:38)
        at net.lingala.zip4j.tasks.ExtractAllFilesTask.executeTask(ExtractAllFilesTask.java:16)
        at net.lingala.zip4j.tasks.AsyncZipTask.performTaskWithErrorHandling(AsyncZipTask.java:46)
        ... 3 more

是否有一种方法可以跳过这些符号链接以避免这种异常?理想的情况下,只有当这些权限不可用时,我才想跳过这些链接(有些用户可能拥有管理员权限,或者以其他方式配置了他们的系统以允许创建符号链接)。我正在寻找一个优雅的解决方案,我不想在图书馆里工作。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-01-14 18:31:54

这个库目前似乎不支持这样的功能。我建议提交一份错误/特性请求。您可以建议一个允许忽略某些错误的自定义错误处理程序,也可以建议一个自定义筛选器,它允许动态选择要提取的文件。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65724478

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档