我想使用打开文件选择器打开一个文本文件并显示在 RichEditBox 中,但是当我选择文件并推送 Ok,Visual Studio 显示"访问被拒绝"时,我想知道如何解决这个问题,这是我的代码:
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 file = await picker.PickSingleFileAsync();
if (file != null)
{
string text = await FileIO.ReadTextAsync(file);
RichEditBox1.Document.SetText(Windows.UI.Text.TextSetOptions.None, text);
}
不必要的 GetFileFromPathAsync 可能会引发 AccessDeny 错误,因为 FileOpenPicker 仅通过返回的 StorageFile 提供访问权限,并且不会通过其路径直接访问文件。此行为取决于版本,新版本的 Windows 10 将允许通过文件系统 API 进行更直接的访问(请参阅内部版本 2017 讨论 UWP 应用文件访问改进