文件访问和权限(Windows 运行时应用)

Applies to Windows and Windows Phone

默认情况下,应用可以访问特定文件系统位置。 应用也可以通过文件选取器或通过声明功能访问其他位置。

  • Applies to Windows
  • Applies to Windows Phone

所有应用都可以访问的位置

在创建新的应用时,默认情况下你可以访问以下文件系统位置:

  • 应用程序安装目录。用户系统上安装你的应用的文件夹。

    访问应用的安装目录中的文件和文件夹主要有两种方式:

    1. 可以检索代表应用的安装目录的 StorageFolder,如下所示:

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

      在检索代表安装目录的 StorageFolder 后,可以使用 StorageFolder 方法访问该目录中的文件和文件夹。在本例中,此 StorageFolder 存储在 installDirectory 变量中。你可以通过下载应用包信息示例了解有关使用你的应用包和安装目录的详细信息。

    2. 你可以通过使用应用 URI 直接从应用的安装目录检索文件,如下所示:

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

      GetFileFromApplicationUriAsync 完成时,它将返回一个 StorageFile,代表应用的安装目录中的 file.txt 文件(示例中的 file)。

      URI 中的 "ms-appx:///" 前缀是指应用的安装目录。你可以在如何使用 URI 来引用内容中了解有关使用应用 URI 的更多信息。

    此外,与其他位置不同,你还可以使用一些用于 Windows 应用商店应用的 Win32 和 COM 和一些 Microsoft Visual Studio 中的 C/C++ 标准库函数来访问应用安装目录中的文件。

    应用的安装目录是一个只读位置。不能通过文件选取器获得对安装目录的访问。

  • 应用程序数据位置。你的应用可以存储数据的文件夹。 在安装你的应用时创建这些文件夹(本地、漫游和临时)。

    可以通过两种主要方法来访问应用的数据位置中的文件和文件夹:

    1. 使用 ApplicationData 属性检索应用数据文件夹。

      例如,可以使用 ApplicationData.LocalFolder 检索代表应用的本地文件夹的 StorageFolder,如下所示:

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

      如果希望访问应用的漫游或临时文件夹,可以改用 RoamingFolderTemporaryFolder 属性。

      在检索代表应用数据位置的 StorageFolder 之后,可以使用 StorageFolder 方法访问该位置中的文件和文件夹。在本例中,这些 StorageFolder 对象存储在 localFolder 变量中。你可以在管理应用程序数据中或通过下载应用程序数据示例了解有关使用应用数据位置的详细信息。

    2. 例如,你可以通过使用应用 URI 直接从应用的本地文件夹检索文件,如下所示:

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

      GetFileFromApplicationUriAsync 完成时,它将返回一个 StorageFile,代表应用的本地文件夹中的 file.txt 文件(示例中的 file)。

      URI 中的 "ms-appdata:///local/" 前缀是指应用的本地文件夹。要访问应用的漫游文件夹或临时文件夹中的文件,请改用 "ms-appdata:///roaming/" 或 "ms-appdata:///temporary/"。你可以在如何加载文件资源中了解关于使用应用 URI 的详细信息。

    此外,与其他位置不同,你还可以使用一些用于 Windows 应用商店应用的 Win32 和 COM 和一些 Visual Studio 中的 C/C++ 标准库函数来访问应用数据位置中的文件。

    你不能通过文件选取器访问本地、漫游或临时文件夹。

  • 可移动设备。此外,默认情况下你的应用可以访问连接设备上的一些文件。如果你的应用使用在用户将设备(如相机或 USB 拇指驱动器)连接到系统时自动启动的自动播放扩展,可以选择此选项。你的应用可以访问的文件限于通过应用清单中的文件类型关联声明指定的特定文件类型。

    当然,还可以通过调用文件选取器(使用 FileOpenPickerFolderPicker)并让用户选取供你的应用访问的文件和文件夹,以获得对可移动设备上的文件和文件夹的访问权。在快速入门:使用文件选取器访问文件中了解如何使用文件选取器。

    注意  有关从 Windows Phone 应用访问 SD 卡的详细信息,请参阅在 Windows Phone 应用中访问 SD 卡

  • Applies to Windows

大多数应用都可以访问的位置

  • 用户的下载文件夹。默认情况下保存下载的文件的文件夹。

    默认情况下,你的应用只能访问其创建的用户下载文件夹中的文件和文件夹。不过,你可以通过调用文件选取器(FileOpenPickerFolderPicker)让用户可以导航并选取供应用访问的文件或文件夹,以获取对用户下载文件夹中的文件和文件夹的访问权。

    • 你可以在用户的下载文件夹中创建文件,如下所示:

      
      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,这样你的应用以后可以随时访问该项目。

访问其他位置

除了默认位置以外,应用还可以通过在应用部件清单中声明功能(请参阅应用功能声明)或者通过调用文件选取器让用户选取供应用访问的文件和文件夹(请参阅快速入门:使用文件选取器访问文件)来访问其他文件和文件夹。

下表列出了其他可通过声明功能和使用关联的 Windows.Storage API 来访问的位置。

位置功能Windows.Storage API

文档

(仅 Windows 应用商店应用)

DocumentsLibrary

注意  必须将文件类型关联(该关联声明你的应用可以在此位置中访问的特定文件类型)添加到你的应用清单。

你的应用使用此功能的情况:

  • 使用有效的 OneDrive URL 或资源 ID 促进跨平台脱机访问特定 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

注意  必须将文件类型关联(该关联声明你的应用可以在此位置中访问的特定文件类型)添加到你的应用清单。

有关从 Windows Phone 应用访问 SD 卡的详细信息,请参阅在 Windows Phone 应用中访问 SD 卡

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

 

 

显示:
© 2014 Microsoft