[英]UnauthorizedAccessException error WindowsPhone C#
private async void Button_Click(object sender, RoutedEventArgs e)
{
await createFile();
await readFile();
}
private async Task readFile()
{
StorageFolder local = KnownFolders.PicturesLibrary;
if (local != null)
{
var dataFolder = await local.GetFolderAsync("msgGen");
var file = await dataFolder.OpenStreamForReadAsync("Msg.dat");
StreamReader msg = new StreamReader(file);
this.textblock.Text = msg.ReadLine();
}
}
private async Task createFile()
{
byte[] mensaje = System.Text.Encoding.UTF8.GetBytes("Este Mensaje".ToCharArray());
StorageFolder local = KnownFolders.DocumentsLibrary;
var dataFolder = await local.CreateFolderAsync("msgGen", CreationCollisionOption.ReplaceExisting);
var file = await dataFolder.CreateFileAsync("Msg.dat", CreationCollisionOption.OpenIfExists);
var s = await file.OpenStreamForWriteAsync();
s.Write(mensaje,0,mensaje.Length);
}
这段代码可能缺少一些{或},但是却被解释了。无论如何,这是我单击按钮时的代码。我已经使用MSDN的示例进行了此操作,并尝试了一些不同的方法,如代码中所示。 无论如何,我的问题是我一直遇到此错误,并在本网站上尝试了很多事情,但没有运气。 我认为该错误是因为我没有管理员权限,但老实说我不知道自己在做什么错。 我的问题是如何摆脱标题中写的错误?
这是在C#中为Windows Phone 8.1完成的。 感谢您的所有帮助。
根据MSDN KnownFolders.DocumentsLibrary
您不能在Windows Phone Store应用程序中使用文档库。
您可以使用应用程序的本地文件夹。
StorageFolder local = ApplicationData.Current.LocalFolder;
完成写/读后,需要关闭流。
所以你的代码可以固定如下
private async Task readFile()
{
StorageFolder local = ApplicationData.Current.LocalFolder;
if (local != null)
{
//...your code
//Close the stream after using it
msg.Close();
}
}
private async Task createFile()
{
//...your code
StorageFolder local = ApplicationData.Current.LocalFolder;
//...your code
//Close the stream after using it
s.Close();
}
首先,您应该将“ picturesLibrary的功能”添加到sln中的Package.appxmanifest文件中:
<Capabilities>
<Capability Name="internetClientServer" />
<Capability Name="picturesLibrary" />
</Capabilities>
那么您还需要将FileTypeAssociation添加到Package.appxmanifest文件中的Application节点中:
<Extensions>
<Extension Category="windows.fileTypeAssociation">
<FileTypeAssociation Name=".dat">
<DisplayName>DatFile</DisplayName>
<SupportedFileTypes>
<FileType>.dat</FileType>
</SupportedFileTypes>
</FileTypeAssociation>
</Extension>
</Extensions>
并且您的代码有一些错误:
1:在KnownFolders.DocumentsLibrary中创建文件并在KnownFolders.PicturesLibrary中读取文件?
2:写流未处理。
像这样修复您的代码:
private async Task readFile()
{
StorageFolder local = KnownFolders.PicturesLibrary;
if (local != null)
{
var dataFolder = await local.GetFolderAsync("msgGen");
var file = await dataFolder.GetFileAsync("Msg.dat");
var stream = (await file.OpenReadAsync()).AsStream();
var msg = new StreamReader(stream);
var text = msg.ReadLine();
this.textBlock.Text = text;
stream.Dispose();
}
}
private async Task createFile()
{
byte[] mensaje = System.Text.Encoding.UTF8.GetBytes("Este Mensaje".ToCharArray());
var local = KnownFolders.PicturesLibrary;
var dataFolder = await local.CreateFolderAsync("msgGen", CreationCollisionOption.ReplaceExisting);
var file = await dataFolder.CreateFileAsync("Msg.dat", CreationCollisionOption.OpenIfExists);
var s = await file.OpenStreamForWriteAsync();
s.Write(mensaje, 0, mensaje.Length);
s.Dispose();
}
测试结果为:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.