gpt4 book ai didi

c# - 为什么 ZipFile.CreateFromDirectory 在此处拒绝访问?

转载 作者:行者123 更新时间:2023-12-03 15:36:26 27 4
gpt4 key购买 nike

我遇到了文件访问问题。

主要问题是我无法在 中写入 ZipFile文件夹选择器获取的文件夹。

虽然我一直在研究这个项目,但在遇到这个 ZipFile 问题之前,我做了很多与创建文件、删除文件以及在该文件夹中创建文件夹相关的工作。这个问题似乎无关紧要。

the file-access documentation说,我对用户在使用文件夹选择器时选择的文件夹具有访问权限。

但我无法在该文件夹中创建此 ZipFile。以下是我的来源和异常(exception)。

string zipfPath = folder.Path + @"\" + i.ToString() + ".zip";
await folder.CreateFolderAsync("DADADAD");
ZipFile.CreateFromDirectory(folder.Path + @"/DADADAD", zipfPath);

denied

为什么我无法使用 ZipFile.Create(Path string) 访问该文件夹?使用 UWP 时是否有其他要求?我只是我的滥用 ZipFile.Create也许?

编辑

异常消息如下
System.UnauthorizedAccessException: '访问路径'C:\Users\yohan\Desktop\새폴더 (2)\1.zip'被拒绝'。

最佳答案

错误是正确的:您没有直接访问该文件夹的权限。现在你最好的选择可能是创建一个 ZipArchive,通过 FolderQuery 枚举文件夹。并将每个文件单独流式传输到 ZipEntry .

更多细节:

您的访问权限是通过文件选择器返回的 StorageFolder 授予的,并且需要通过该 StorageFolder 使用。

引自 File access permissions您链接的文档并为清楚起见添加了一些重点:

After you retrieve a StorageFolder that represents an app data location, you can access files and folders in that location by using StorageFolder methods.



由于 ZipFile 不使用 StorageFolder 方法,因此无法到达目标文件夹。权限未附加到传递给 ZipFile 的 Path。

我在我的博客条目 Skip the path: stick to the StorageFile 中对此进行了更深入的讨论。

正在通过直接文件系统调用来探测代理访问,但尚未完成。在当前版本的 Windows 10 中,您可以使用 IStorageFolderHandleAccess , IStorageItemHandleAccessCreateFile2FromApp获取 native 文件 HANDLE,您可以使用它来创建 System.IO.File 对象,但它不适用于 .Net 类,例如采用 Path 并自行打开文件的 ZipFile。

关于c# - 为什么 ZipFile.CreateFromDirectory 在此处拒绝访问?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52237012/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com