Кроме описанных в прошлой теме папок, которые доступны разработчику, мы также можем использовать еще ряд папок, которые являются специальными и предназначены для хранения файлов пользователя. Доступ к ним можно получить через свойства класса Windows.Storage.KnownFolders:
DocumentsLibrary: представляет папку Documents (Документы)
HomeGroup: каталог HomeGroup
MediaServerDevices: папка Media Server Devices
MusicLibrary: папка Music (Музыка)
PicturesLibrary: папка Pictures (Изображения)
RemovableDevices: папка Removable Devices
VideosLibrary: папка Videos (Видео)
SavedPictures: папка для сохраненных скриншотов
Но просто так обратиться к этим папкам, например, написав:
StorageFolder folder = KnownFolders.PicturesLibrary;
мы не можем. Чтобы с ними работать, нам надо изменить файл манифеста.
Итак, откроем файл Package.appxmanifest и перейдем на вкладку Capabilities. И здесь нам надо отметить те специальные папки, к которым мы будем обращаться:
В данном случае я отметил пункт "Pictures Library", тем самым сделав доступной для моего кода папку изображений. И теперь я могу к ней обращаться:
private async void Page_Loaded(object sender, RoutedEventArgs e) { StorageFolder folder = KnownFolders.PicturesLibrary; IReadOnlyList<StorageFile> files = await folder.GetFilesAsync(); foreach (StorageFile file in files) filesList.Items.Add(file.Name); }
Еще одна папка, которую мы можем использовать, - это папка загрузок или Downloads. Для работы с ней предназначен специальный класс DownloadsFolder. Однако возможности этого класса ограничены преимущественно функциональностью записи. Так, нам доступны следующие методы:
CreateFileAsync(): создает файл в папке загрузок
CreateFileForUserAsync(): создает файл для определенного пользователя
CreateFolderAsync(): создает папку
CreateFolderForUserAsync(): создает папку для определенного пользователя
Например, создание новой папки и файла в папке загрузок:
// создание папки Data StorageFolder newFolder = await DownloadsFolder.CreateFolderAsync("Data"); // создание файла file.txt StorageFile newFile = await DownloadsFolder.CreateFileAsync("file.txt");