重要的应用程序接口(API)
使用 StorageFile.IsAvailable 属性确定 Microsoft OneDrive 文件是否可用。
先决条件
了解通用 Windows 平台(UWP)应用的异步编程
了解如何在 C# 或 Visual Basic 中编写异步应用,请参阅 在 C# 或 Visual Basic 中调用异步 API。 若要了解如何在C++中编写异步应用,请参阅C++中的
异步编程。 应用功能声明
请参阅 文件访问权限。
使用 StorageFile.IsAvailable 属性
用户可以将 OneDrive 文件标记为离线可用(默认)或仅在线。 此功能使用户能够将大型文件(如图片和视频)移动到其 OneDrive,将其标记为仅联机,并节省磁盘空间(本地保存的唯一内容是元数据文件)。
StorageFile.IsAvailable,用于确定文件当前是否可用。 下表显示了各种方案中 StorageFile.IsAvailable 属性的值。
文件类型 | 在线 | 按流量计费的网络 | 离线 |
---|---|---|---|
本地文件 | 真 实 | 真 实 | 真 实 |
标记为可用脱机的 OneDrive 文件 | 真 实 | 真 实 | 真 实 |
标记为仅限联机的 OneDrive 文件 | 真 实 | 基于用户设置 | 假 |
网络文件 | 真 实 | 基于用户设置 | 假 |
以下步骤演示如何确定文件当前是否可用。
- 声明适合要访问的库的功能。
- 包括 Windows.Storage 命名空间。 此命名空间包括用于管理文件、文件夹和应用程序设置的类型。 它还包括所需的 StorageFile 类型。
- 获取所需文件的 StorageFile 对象。 如果要枚举库,则此步骤通常通过调用 StorageFolder.CreateFileQuery 方法来完成,然后调用生成的 StorageFileQueryResult 对象的 GetFilesAsync 方法。 GetFilesAsync 方法返回一个包含 StorageFile 对象的 IReadOnlyList 集合。
- 一旦获得对表示所需文件的 StorageFile 对象的访问权限,StorageFile.IsAvailable 属性的值将反映文件是否可用。
以下泛型方法演示如何枚举任何文件夹并返回该文件夹的 StorageFile 对象的集合。 然后,调用方法循环访问返回的集合,引用每个文件的 StorageFile.IsAvailable 属性。
/// <summary>
/// Generic function that retrieves all files from the specified folder.
/// </summary>
/// <param name="folder">The folder to be searched.</param>
/// <returns>An IReadOnlyList collection containing the file objects.</returns>
async Task<System.Collections.Generic.IReadOnlyList<StorageFile>> GetLibraryFilesAsync(StorageFolder folder)
{
var query = folder.CreateFileQuery();
return await query.GetFilesAsync();
}
private async void CheckAvailabilityOfFilesInPicturesLibrary()
{
// Determine availability of all files within Pictures library.
var files = await GetLibraryFilesAsync(KnownFolders.PicturesLibrary);
for (int i = 0; i < files.Count; i++)
{
StorageFile file = files[i];
StringBuilder fileInfo = new StringBuilder();
fileInfo.AppendFormat("{0} (on {1}) is {2}",
file.Name,
file.Provider.DisplayName,
file.IsAvailable ? "available" : "not available");
}
}