Главная » C#, Windows Runtime, XAML, Разработка для Windows 8 » Работа с файлами Windows Runtime

0

Выше  мы  говорили о  хранилищах  данных  для  приложений  как  о  способе сохранять простые настройки  и  файлы. Но  если  говорить о  файлах, то  тут может понадобиться сохранять их не только в  каталог приложения, о котором пользователь ничего не знает, но и в один из стандартных каталогов. Например, если Ваше приложение позволяет редактировать изображения, то логично давать пользователю возможность сохранять их в каталог My Pictures. Windows Runtime позволяет делать  это, реализуя класс  KnownFolders, который предоставляет следующие свойства.

·                   DocumentsLibrary — ссылка на каталог My Documents.

·                   PicturesLibrary — ссылка на каталог My Pictures.

·                   MusicLibrary — ссылка на каталог My Music.

·                   HomeGroup — возможность получать доступ к файловому  хранилищу внутри домашней сети пользователя.

·                   MediaServerDevices —  возможность взаимодействовать  с  устройством, поддерживающим     передачу      данных      по       протоколу      DLNA (функциональность PlayTo).

·                   RemovableDevices   —   возможность  получать   доступ   к    внешним хранилищам, подключенным напрямую к компьютеру.

Все перечисленные свойства возвращают объект типа StorageFolder, о котором мы  писали  в    предыдущем  разделе.  А  получив ссылку  на   StorageFolder, разработчик может спокойно открывать и создавать новые файлы.

Правда, не все так просто. Для того чтобы приложение прошло сертификацию в  магазине Windows, необходимо, чтобы файл  манифеста прописывал среди прочих  возможностей приложения  и   те,  которые  декларируют  доступ  к определенному каталогу  пользователя (об этом  в   следующей главе). Кроме того,  приложение  будет  иметь  доступ  только  к  тому  типу  файлов, который (которые)   определяется  в   том  же  манифесте  путем  декларации  File  Type Associations. Иными словами, если Ваше приложение работает с .docx-файлами, то их расширение необходимо задекларировать в манифесте, и только тогда Вы сможете получить доступ ко всем подобным файлам. Все это сделано для того, чтобы оградить пользователя от нежелательного доступа к его личным данным. Пользователь еще на  этапе установки будет знать, какие  файлы  использует приложение и к каким каталогам имеет доступ.

Существует еще один механизм работы с файлами — возможность пользователя выбирать  файл    самостоятельно.   Она    достигается    с    помощью   класса FileOpenPicker, который откроет стандартное  диалоговое окно, позволяющее выбрать файл  практически  из   любого   места.  Возможность  использования

FIleOpenPicker  также   должна  быть  задекларирована, после  чего   можно спокойно создавать объект этого класса. Вот небольшой пример кода.

public async void SelectFile()

{

FileOpenPicker openPicker = new FileOpenPicker(); openPicker.ViewMode = PickerViewMode.Thumbnail;

openPicker.SuggestedStartLocation = PickerLocationId.PicturesLibrary;

openPicker.FileTypeFilter.Add(".tif");

StorageFile file=await openPicker.PickSingleFileAsync();

}

Вызвав этот метод, мы получим стандартный диалог, который позволяет выбрать файл с расширением .tif.

Рис. 10.1.

Если Вы хотите не открыть файл, а сохранить данные из приложения  в  место, указанное пользователем, то можно воспользоваться классом  FileSavePicker, который работает аналогично.

Сергей Лутай, Сергей Байдачный, Windows 8 для C# разработчиков

По теме:

  • Комментарии