重要的應用程式介面
判斷Microsoft OneDrive 檔案是否可使用 StorageFile.IsAvailable 屬性。
先決條件
瞭解通用 Windows 平臺 (UWP) app 的異步程式設計
您可以瞭解如何在 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 方法將傳回一個 IReadOnlyList 集合,包含 StorageFile 物件。
- 一旦您能夠存取代表所需檔案的 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");
}
}