Zajmuję się tworzeniem aplikacji, która czyta pliki jpeg i pdf z konfigurowalnej lokalizacji w systemie plików. Obecnie w WPF jest uruchomiona wersja, a teraz próbuję przenieść się do nowych aplikacji Windows Universal.Windows 10 Uniwersalny dostęp do pliku/katalogu
następujący kod działa poprawnie z 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;
}
Przy użyciu uniwersalnego Apps wpadłem na pewne problemy:
Directory.Exists
nie jest dostępny- Jak można odczytać z katalogów poza moje miejsce do przechowywania aplikacji?
Aby odczytać z innego katalogu poza przechowywania app Próbowałem następujące:
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();
Chodzi o to: To isnt działa, ale pojawia się wyjątek:
Wyjątek typu "System.UnauthorizedAccessException" wystąpił w TextManager.Universal.DataAccess.dll, ale nie był obsługiwany w kodzie użytkownika Dodatkowe informacje: Odmowa dostępu. (Wyjątek od HRESULT: 0x80070005 (E_ACCESSDENIED))
wiem, że trzeba skonfigurować niektóre uprawnienia w manifeście, ale nie mogę znaleźć jeden odpowiednie dla systemu plików operacji IO ...
Czy ktoś również mają takie problemy/możliwe rozwiązanie?
Rozwiązanie: Z rozwiązań @Rico Suter dał mi, chosed się FutureAccessList w połączeniu z FolderPicker. Dostęp do wpisu z tokenem jest również możliwy po ponownym uruchomieniu programu.
Mogę również polecić Ci UX Guidlines i ten Github sample.
Dziękuję bardzo!
Dlaczego chcesz czytać z katalogów spoza magazynu aplikacji? Piaskownica istnieje z jakiegoś powodu. –
Ponieważ chcę łatwy sposób na zmianę plików. Oznacza to, że nie ma możliwości z powodu piaskownicy? – WhiteIntel