Я разрабатываю приложение, которое читает файлы jpeg и pdf из настраиваемого местоположения в файловой системе. В настоящее время в WPF реализована работающая версия, и теперь я пытаюсь перейти на новые приложения Windows Universal.Windows 10 Universal App File/Directory Access
Следующий код прекрасно работает с WPF:
public IList<string> GetFilesByNumber(string path, string number)
{
if (string.IsNullOrWhiteSpace(path))
throw new ArgumentNullException(nameof(path));
if (string.IsNullOrWhiteSpace(number))
throw new ArgumentNullException(nameof(number));
if (!Directory.Exists(path))
throw new DirectoryNotFoundException(path);
var files = Directory.GetFiles(path, "*" + number + "*",
SearchOption.AllDirectories);
if (files == null || files.Length == 0)
return null;
return files;
}
С помощью универсального приложения я столкнулся с некоторыми проблемами:
Directory.Exists
не доступен- Как я могу читать из каталогов за пределами мое хранилище приложений?
Для чтения из другой директории вне хранилища приложения я попытался следующие:
StorageFolder folder = StorageFolder.GetFolderFromPathAsync("D:\\texts\\");
var fileTypeFilter = new string[] { ".pdf", ".jpg" };
QueryOptions queryOptions = new QueryOptions(CommonFileQuery.OrderBySearchRank, fileTypeFilter);
queryOptions.UserSearchFilter = "142";
StorageFileQueryResult queryResult = folder.CreateFileQueryWithOptions(queryOptions);
IReadOnlyList<StorageFile> files = queryResult.GetFilesAsync().GetResults();
Дело в том: Это не правда работает, но я получаю исключение:
Исключение типа «System.UnauthorizedAccessException» произошло в TextManager.Universal.DataAccess.dll, но не было обработано в коде пользователя Дополнительная информация: Доступ запрещен. (Исключение из HRESULT: 0x80070005 (E_ACCESSDENIED))
Я знаю, что вы должны настроить некоторые разрешения в манифесте, но я не могу найти один подходящий для файловой системы операций ввода-вывода ...
ли кто-то также есть такие проблемы/возможное решение?
Решение: Из решений, которые @Rico Сутер дал мне, я chosed в FutureAccessList в сочетании с FolderPicker. Также возможен доступ к записи с токеном после перезапуска программы.
Я также могу рекомендовать вам UX Guidlines и этот Github sample.
спасибо!
Почему вы хотите читать из каталогов вне хранилища вашего приложения? Песочница существует по какой-то причине. –
Потому что я хочу простой способ изменить файлы. Значит, это означает, что нет никакой возможности из-за песочницы? – WhiteIntel