Environment.SpecialFolder.MyDocuments中的CreateDirectory被拒绝

时间:2019-04-02 21:01:52

标签: ios xamarin.forms create-directory

我有一个文件流,要存储在iOS的SpecialFolder枚举下的子文件夹下。

FileStream构造函数希望子文件夹结构首先存在,而当我尝试创建它时,出现UnauthorizedAccessException。

假设我的预定位置是

Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + "/folder1/file1.xls";

在我的会话中解析为

/var/mobile/Containers/Data/Application/035ECE7D-0E9F-4DF9-927B-B79FB31AEE01/Documents/folder1/file1.xls

然后我确定该位置存在

if (!Directory.Exists(filepath))
{
    Directory.CreateDirectory(filepath);
}

Microsoft according应该可以使用的

CreateDirectory不是创建子文件夹,而是文件流愉快地将文件保存到其中,而是抛出以下内容:

{System.UnauthorizedAccessException: Access to the path "/var/mobile/Containers/Data/Application/035ECE7D-0E9F-4DF9-927B-B79FB31AEE01" is denied.

我认为MyDocuments可以随意做些事情吗?我没有看到文档说我必须首先应用权限。我应该在哪里创建文件夹?

2 个答案:

答案 0 :(得分:0)

如果使用Visual Studio进行编码,请在运行项目后尝试在管理员(Visual Studio)中运行该程序。也许这是一个很好的解决方案。

答案 1 :(得分:0)

您可以尝试创建平台特定的类来保存文件,并使用DependencyService来调用您的方法。对于iOS应用,我使用了以下文件夹枚举:Environment.SpecialFolder.Personal,它对我有用。