Отказ в доступе, когда я использую средство выбора открытых файлов для открытого текстового файла для RichEditBox UWP C#
Я хочу открыть текстовый файл с помощью Open File Picker и показать в 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);
}
1 ответ
Вам не нужно звонить StorageFile.GetFileFromPathAsync(file.Path)
так как у вас уже есть этот StorageFile в file
переменная, возвращаемая из PickSingleFileAsync:
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 файловой системы (см. Улучшения доступа к файлам в приложениях UWP приложения Build 2017)