无法访问Windows手机应用程序上的LocalFolder文件(UnauthorizedAccessException)

时间:2015-06-14 20:50:19

标签: c# file-io windows-phone

我正在尝试让应用程序在Windows Phone 8中编写(然后读取)一个简单的文本文件。我的应用程序有三个控件:一个创建文件按钮,一个显示文件按钮和一个文本框,其中的内容应该是显示。

我在代码中设置了以下事件:

private async void btnCreateFile_Click(object sender, RoutedEventArgs e)
    {
        await ApplicationData.Current.LocalFolder.CreateFileAsync("myFile.txt");
        StorageFile file = await ApplicationData.Current.LocalFolder.GetFileAsync("myFile.txt");

        StreamWriter writer =  new StreamWriter(await file.OpenStreamForWriteAsync());

        writer.WriteLine("Hello World");
        writer.WriteLine("Goodbye world");
    }

    private async void btnShowFile_Click(object sender, RoutedEventArgs e)
    {
        StorageFile file = await ApplicationData.Current.LocalFolder.GetFileAsync("myFile.txt");

        StreamReader reader = new StreamReader(await file.OpenStreamForReadAsync());

        string text = reader.ReadToEnd();
        text1.Text = text;

    }
}

应用程序在创建StreamReader时抛出UnauthorizedAccessException。任何人都可以解释为什么?

2 个答案:

答案 0 :(得分:1)

我猜你不是StreamWriter using( var writer = new StreamWriter(await file.OpenStreamForWriteAsync())) { writer.WriteLine("Hello World"); writer.WriteLine("Goodbye world"); } 。请参阅disposing

Metronome

这就是你无法读取文件的原因,因为它已经被SreamWriter采用了。

答案 1 :(得分:0)

在使用继承自IDisposable的对象时,始终使用'using'语句。

您正在尝试写入已打开的文件,这会给您UnauthoritedException。

尝试在使用中使用您的代码块。查看此问题以查找有关StreamWriter的更多信息:

how to use StreamWriter class properly?