当我使用打开文件选择器打开 RichEditBox UWP C# 的文本文件时访问被拒绝
Acces Denied when I use Open File Picker for open text file for RichEditBox UWP C#
我想用 Open File Picker 打开一个文本文件并在 RichEditBox 中显示,但是当我 select 文件并按下确定时,Visual Studio 显示 "Access Denied",我想要请知道如何解决这个问题,这是我的代码:
var picker = new FileOpenPicker();
picker.ViewMode = PickerViewMode.Thumbnail;
picker.SuggestedStartLocation = PickerLocationId.DocumentsLibrary;
picker.FileTypeFilter.Add("*");
picker.FileTypeFilter.Add(".txt");
picker.FileTypeFilter.Add(".text");
picker.FileTypeFilter.Add(".bat");
picker.FileTypeFilter.Add(".js");
picker.FileTypeFilter.Add(".vbs");
StorageFile file = await picker.PickSingleFileAsync();
if (file != null)
{
StorageFolder storageFolder = ApplicationData.Current.LocalFolder;
StorageFile filepath = await StorageFile.GetFileFromPathAsync(file.Path);
string text = await FileIO.ReadTextAsync(filepath);
RichEditBox1.Document.SetText(Windows.UI.Text.TextSetOptions.None, text);
}
您不需要调用 StorageFile.GetFileFromPathAsync(file.Path)
,因为您已经在从 PickSingleFileAsync 返回的 file
变量中拥有此 StorageFile:
StorageFile file = await picker.PickSingleFileAsync();
if (file != null)
{
string text = await FileIO.ReadTextAsync(file);
RichEditBox1.Document.SetText(Windows.UI.Text.TextSetOptions.None, text);
}
不必要的 GetFileFromPathAsync 可能会引发 AccessDenied 错误,因为 FileOpenPicker 仅通过返回的 StorageFile 提供访问权限,而不会通过其路径直接访问文件。此行为取决于版本,Windows 10 的新版本将允许通过文件系统 API 进行更直接的访问(请参阅 Build 2017 讨论 UWP Apps file access improvements
我想用 Open File Picker 打开一个文本文件并在 RichEditBox 中显示,但是当我 select 文件并按下确定时,Visual Studio 显示 "Access Denied",我想要请知道如何解决这个问题,这是我的代码:
var picker = new FileOpenPicker();
picker.ViewMode = PickerViewMode.Thumbnail;
picker.SuggestedStartLocation = PickerLocationId.DocumentsLibrary;
picker.FileTypeFilter.Add("*");
picker.FileTypeFilter.Add(".txt");
picker.FileTypeFilter.Add(".text");
picker.FileTypeFilter.Add(".bat");
picker.FileTypeFilter.Add(".js");
picker.FileTypeFilter.Add(".vbs");
StorageFile file = await picker.PickSingleFileAsync();
if (file != null)
{
StorageFolder storageFolder = ApplicationData.Current.LocalFolder;
StorageFile filepath = await StorageFile.GetFileFromPathAsync(file.Path);
string text = await FileIO.ReadTextAsync(filepath);
RichEditBox1.Document.SetText(Windows.UI.Text.TextSetOptions.None, text);
}
您不需要调用 StorageFile.GetFileFromPathAsync(file.Path)
,因为您已经在从 PickSingleFileAsync 返回的 file
变量中拥有此 StorageFile:
StorageFile file = await picker.PickSingleFileAsync();
if (file != null)
{
string text = await FileIO.ReadTextAsync(file);
RichEditBox1.Document.SetText(Windows.UI.Text.TextSetOptions.None, text);
}
不必要的 GetFileFromPathAsync 可能会引发 AccessDenied 错误,因为 FileOpenPicker 仅通过返回的 StorageFile 提供访问权限,而不会通过其路径直接访问文件。此行为取决于版本,Windows 10 的新版本将允许通过文件系统 API 进行更直接的访问(请参阅 Build 2017 讨论 UWP Apps file access improvements