c# - ZipFile.CreateFromDirectory UnauthorizedAccessException
问题描述
我正在尝试使用以下语法在 .NET 5.0 中创建一个 Zip 文件:
ZipFile.CreateFromDirectory(sourceDirectoryName, zipFilePath, CompressionLevel.Fastest, true);
问题是,有一个我没有读取权限的子目录。因此,我总是得到一个UnauthorizedAccessException
并且压缩过程中止。有没有办法跳过这个未经授权的文件夹?
解决方案
正如您从的源代码中ZipFile.CreateFromDirectory
看到的那样,您无法提供任何参数来抑制该异常。
public static void CreateFromDirectory(
string sourceDirectoryName,
string destinationArchiveFileName,
CompressionLevel compressionLevel,
bool includeBaseDirectory,
Encoding? entryNameEncoding) =>
DoCreateFromDirectory(
sourceDirectoryName,
destinationArchiveFileName,
compressionLevel,
includeBaseDirectory,
entryNameEncoding);
private static void DoCreateFromDirectory(
string sourceDirectoryName,
string destinationArchiveFileName,
CompressionLevel? compressionLevel,
bool includeBaseDirectory,
Encoding? entryNameEncoding) { ... }
这给您留下了几个选择:
- 复制该方法并进行必要的编辑以满足您的需要。
- 遍历树,列出所有可访问文件,然后用于
ZipFileUtils.EntryFromPath
手动制作 ZIP 存档。 - 将要压缩的所有文件复制/硬链接到临时文件夹,同时跳过不可访问的文件并压缩该文件夹。
推荐阅读
- firebase - 已请求 Google API!- 显示在火力服务中
- python - 如何从“对象”的熊猫列中的字符串中提取数字?
- powerbi - 如何使用 DAX 在 Power BI 中计算列、每个周期和每个类别中的行数,然后对它们进行排名?
- python - 由于服务器中安装了反恶意软件,在 SQL Server 中运行 python 脚本时面临性能问题
- c++ - 在 Qt 中运行使用线程以执行阻塞任务的正确方法是什么?
- python - 将 SQL 表转储到 FILE 并应用自定义函数?
- python - 当真实 ID 与 kivmob 一起使用时,Kivy 应用程序崩溃
- python - 即使在 python3 中使用 encoding=utf-8 也无法编码字符 '\u0144'
- python - Plotly Dash:编辑背景图像
- kotlin - 如何用编程语言解密记事本++ nppcrypt加密消息