iPhone 4S - 未授权访问例外

时间:2014-11-10 14:18:33

标签: ios iphone xcode xamarin

这是一个我相信Xcode开发人员也可以回答的问题。我在Xamarin下面有我的代码截图。

为什么我会收到未经授权的访问异常?我应该能够写到文件夹吗?

var webClient = new WebClient();
        //var documentsFolder = Environment.GetFolderPath (Environment.SpecialFolder.Personal); // iOS 7 and earlier
        var documentsFolder = NSBundle.MainBundle.BundlePath;
        var fileNameAndPath = Path.Combine (documentsFolder, "verses.xml");


        if(!File.Exists(documentsFolder)){

            Directory.CreateDirectory(documentsFolder);

            if(!File.Exists(fileNameAndPath)){

                //File.SetAttributes(fileNameAndPath, FileAttributes.Normal);
                File.Create(fileNameAndPath);
                //Throws exception here.

            }

        }

和错误:

访问路径" /var/mobile/Applications/1F95D694-BBA5-4FB3-AE6C-0C2CDD9DEDD8/comexample.app/verses.xml"被拒绝

访问路径' /private/var/mobile/Applications/1F95D694-BBA5-4FB3-AE6C-0C2CDD9DEDD8/Documents/verses.xml'被拒绝。

我尝试了两种路径,但我拒绝访问。

3 个答案:

答案 0 :(得分:2)

BundlePath不是iOS应用程序的可写区域。

来自http://developer.xamarin.com/guides/ios/application_fundamentals/working_with_the_file_system/

的Xamarin笔记

以下代码段将在可写文档区域中创建一个文件。

var documents =
  Environment.GetFolderPath (Environment.SpecialFolder.MyDocuments); // iOS 7 and earlier
var filename = Path.Combine (documents, "Write.txt");
File.WriteAllText(filename, "Write this text into a file");

iOS 8页面上有一条注释,要求更改文档文件夹

var documents = NSFileManager.DefaultManager.GetUrls (NSSearchPathDirectory.DocumentDirectory, 
  NSSearchPathDomain.User) [0];

答案 1 :(得分:1)

假设您使用的是iOS 8,则文档目录未连接到捆绑路径。使用函数NSSearchPathForDirectoriesInDomains()(或URLsForDirectory:inDomains:)查找文档目录。

答案 2 :(得分:0)

我认为它应该是Directory.Exists(),您可以在其中检查目录是否存在:

if(!File.Exists(documentsFolder)){

相关问题