Доступ к файлам и права доступа

Доступ к файлам и разрешения (приложения среды выполнения Windows)

[ Эта статья адресована разработчикам приложений среды выполнения Windows для Windows 8.x и Windows Phone 8.x. При разработке приложений для Windows 10 см. раздел последняя документация]

Приложения могут иметь доступ к определенным расположениям в файловой системе по умолчанию. Приложения также могут получить доступ к дополнительным расположениям через средство выбора файлов или с помощью объявления возможностей.

Расположения, доступные всем приложениям

Создавая новое приложение, вы по умолчанию получаете доступ к следующим расположениям в файловой системе:

  • Папка установки приложения. Папка, в которую устанавливается ваше приложение в системе пользователя.

    Существуют два основных способа получения доступа к файлам и папкам в папке установки вашего приложения.

    1. Вы можете получить класс StorageFolder, соответствующий папке установки вашего приложения, следующим образом:

      
      
      var installDirectory = Windows.ApplicationModel.Package.current.installedLocation;
      
      

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

    2. Вы можете загрузить файл непосредственно из папки установки приложения с помощью универсального кода ресурса приложения следующим образом:

      
      
      Windows.Storage.StorageFile.getFileFromApplicationUriAsync("ms-appx:///file.txt").done(
          function(file) {
              // Process file
          }
      );
      
      

      После завершения метод GetFileFromApplicationUriAsync возвращает класс StorageFile, соответствующий файлу file.txt в папке установки приложения (file в примере).

      Префикс "ms-appx:///" в универсальном коде ресурса относится к папке установки приложения. Дополнительные сведения об использовании универсальных кодов ресурсов: Добавление ссылок на содержимое с помощью URI.

    Кроме того (и в отличие от иных расположений), доступ к файлам в каталоге установки приложения также можно получить, используя некоторые Win32 и COM для приложений Магазина Windows и некоторые функции стандартной библиотеки C/C++ из Microsoft Visual Studio.

    Папка установки приложения предназначена только для чтения. Нельзя получить доступ к папке установки с помощью средства выбора файлов.

  • Расположения данных приложения. Папки, в которых ваше приложение может хранить данные. Эти папки (локальная, перемещаемая и временная) создаются при установке вашего приложения.

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

    1. Используйте свойства ApplicationData, чтобы получить папку данных приложения.

      Например, вы можете использовать ApplicationData.LocalFolder, чтобы получить класс StorageFolder, соответствующий локальной папке вашего приложения, следующим образом:

      
      
      var localFolder = Windows.Storage.ApplicationData.current.localFolder;
      
      

      Если вы хотите получить доступ к перемещаемой или временной папке вашего приложения, вместо этого используйте свойство RoamingFolder или TemporaryFolder.

      Загрузив класс StorageFolder, соответствующий расположению данных приложения, вы получите доступ к файлам и папкам этого расположения с помощью методов StorageFolder. В примере эти объекты StorageFolder хранятся в переменной localFolder. Подробности об использовании расположений данных приложения вы можете узнать из раздела Управление данными приложения, а также скачав образец данных приложений.

    2. Например, вы можете получить файл непосредственно из локальной папки своего приложения с помощью универсального кода ресурса приложения следующим образом:

      
      
      Windows.Storage.StorageFile.getFileFromApplicationUriAsync("ms-appdata:///local/file.txt").done(
          function(file) {
              // Process file
          }
      );
      
      

      После завершения метод GetFileFromApplicationUriAsync возвращает класс StorageFile, соответствующий файлу file.txt в локальной папке приложения (file в примере).

      Префикс "ms-appdata:///local/" в универсальном коде ресурса относится к локальной папке приложения. Чтобы получить доступ к файлам в перемещаемой или временной папке приложения, используйте вместо этого "ms-appdata:///roaming/" или "ms-appdata:///temporary/". Дополнительные сведения об использовании универсальных кодов ресурсов приложения см. в разделе Загрузка файловых ресурсов.

    Кроме того (и в отличие от иных расположений), доступ к файлам в расположениях данных приложения также можно получить, используя некоторые Win32 и COM для приложений Магазина Windows и некоторые функции стандартной библиотеки C/C++ из Visual Studio.

    Нельзя получить доступ к локальной, перемещаемой и временной папкам с помощью средства выбора файлов.

  • Съемные устройства. Кроме того, ваше приложение по умолчанию имеет доступ к некоторым файлам на подключенных устройствах. Этот вариант подходит, если ваше приложение использует расширение "Автозапуск", чтобы запускаться автоматически при подключении к системе устройства, например камеры или USB-устройства флэш-памяти. Доступ вашего приложения к файлам ограничен определенными типами файлов, указанными с помощью объявлений сопоставлений типов файлов в манифесте приложения.

    Вы также можете получить доступ к файлам и папкам на съемном устройстве, вызвав средство выбора файлов (с помощью FileOpenPicker и FolderPicker) и позволив пользователю выбирать файлы или папки, предоставляя приложению доступ к ним. Дополнительные сведения об использовании средства выбора файлов см. в разделе Краткое руководство: доступ к файлам с помощью средств выбора файлов.

    Примечание  Подробнее о доступе к SD-карте из приложения Windows Phone: Доступ к SD-карте в приложениях Windows Phone.
     

Расположения, к которым приложения Магазина Windows могут получить доступ

  • Папка скачиваемых файлов пользователя. Папка, в которой по умолчанию сохраняются скачиваемые файлы.

    По умолчанию ваше приложение имеет доступ к файлам и папкам только в папке скачиваемых файлов пользователя, созданной этим приложением. Однако вы можете получить доступ к файлам и папкам в папке скачиваемых файлов пользователя, вызвав средство выбора файлов (FileOpenPicker или FolderPicker), чтобы пользователь мог осуществлять навигацию и выбирать файлы или папки, предоставляя приложению доступ к ним.

    • Вы можете создать файл в папке скачиваемых файлов пользователя следующим образом:

      
      Windows.Storage.DownloadsFolder.createFileAsync("file.txt").done(
          function(newFile) {
              // Process file
          }
      );
      
      

      DownloadsFolder.CreateFileAsync перегружен таким образом, чтобы вы могли указать системе алгоритм действий, если в папке скачиваемых файлов уже существует файл с таким же именем. После завершения эти методы возвращают класс StorageFile, соответствующий созданному файлу. В примере этот файл назван newFile.

    • Вы можете создать вложенную папку в папке скачиваемых файлов пользователя следующим образом:

      
      Windows.Storage.DownloadsFolder.createFolderAsync("New Folder").done(
          function(newFolder) {
              // Process folder
          }
      );
      
      

      DownloadsFolder.CreateFolderAsync перегружен таким образом, чтобы вы могли указать системе алгоритм действий, если в папке скачиваемых файлов уже существует вложенная папка с таким же именем. После завершения эти методы возвращают класс StorageFolder, соответствующий созданной вложенной папке. В примере этот файл назван newFolder.

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

Доступ к дополнительным расположениям

Кроме расположений по умолчанию, приложение может получить доступ к дополнительным файлам и папкам с помощью объявления возможностей в манифесте приложения (см. Объявления характеристик приложения) или с помощью вызова средства выбора файлов, что позволяет пользователю выбирать файлы и папки, предоставляя приложению доступ к ним (см. Краткое руководство: доступ к файлам с помощью средств выбора файлов).

В следующей таблице перечислены дополнительные расположения, доступ к которым возможен при помощи объявления возможности (или возможностей) и использования связанных API Windows.Storage:

РасположениеВозможностьAPI Windows.Storage

Документы

(Только приложения Магазина Windows)

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

Используйте данную возможность, если ваше приложение:

  • Поддерживает кросс-платформенный автономный доступ к конкретному содержимому OneDrive, используя допустимые URL-адреса OneDrive или идентификаторы ресурсов.
  • Автоматически сохраняет открытые файлы в OneDrive пользователя при работе в автономном режиме.
KnownFolders.DocumentsLibrary
МузыкаMusicLibrary

Подробнее о доступе к библиотекам мультимедиа из приложения Windows Phone: Доступ к библиотекам мультимедиа в приложениях Windows Phone.

KnownFolders.MusicLibrary
ИзображенияPicturesLibrary

Подробнее о доступе к библиотекам мультимедиа из приложения Windows Phone: Доступ к библиотекам мультимедиа в приложениях Windows Phone.

KnownFolders.PicturesLibrary
ВидеоVideosLibrary

Подробнее о доступе к библиотекам мультимедиа из приложения Windows Phone: Доступ к библиотекам мультимедиа в приложениях Windows Phone.

KnownFolders.VideosLibrary
Съемные устройстваRemovableDevices
Примечание  Вам необходимо добавить сопоставления типов файлов в манифест вашего приложения, в котором указаны определенные типы файлов, доступные приложению в этом расположении.
 

Подробнее о доступе к SD-карте из приложения Windows Phone: Доступ к SD-карте в приложениях Windows Phone.

KnownFolders.RemovableDevices

Библиотеки домашней группы

(Только приложения Магазина Windows)

Требуется по меньшей мере одна из следующих возможностей:

KnownFolders.HomeGroup

Устройства сервера мультимедиа (DLNA)

(Только приложения Магазина Windows)

Требуется по меньшей мере одна из следующих возможностей:

KnownFolders.MediaServerDevices

Папки UNC

(Только приложения Магазина Windows)

Требуется комбинация следующих возможностей:

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

Получение папки с помощью:

StorageFolder.GetFolderFromPathAsync

Получение файла с помощью:

StorageFile.GetFileFromPathAsync

 

Связанные разделы

Управление данными приложения
Ресурсы JavaScript
Краткое руководство: чтение и запись файла
Краткое руководство: доступ к файлам с помощью средств выбора файлов
Загрузка файловых ресурсов
Отслеживание недавно использовавшихся файлов и папок
Ресурсы C#, C++, VB
Краткое руководство: чтение и запись файла
Краткое руководство: доступ к файлам с помощью средств выбора файлов
Загрузка файловых ресурсов
Отслеживание недавно использовавшихся файлов и папок
Примеры
Образец сведений о пакете приложения
Образец данных приложения
Образец доступа к файлам
Образец средства выбора файлов
Справочник по API
Windows.ApplicationModel.Package
Windows.Storage.ApplicationData
Windows.Storage.DownloadsFolder
Windows.Storage.Pickers.FileOpenPicker
Windows.Storage.Pickers.FolderPicker
Windows.Storage.KnownFolders
Windows.Storage.StorageFile
Windows.Storage.StorageFolder
Windows.Storage.FileIO
Windows.Storage.PathIO
Windows.Storage.AccessCache.StorageApplicationPermissions.FutureAccessList
Windows.Storage.AccessCache.StorageApplicationPermissions.MostRecentlyUsedList

 

 

Показ:
© 2016 Microsoft