追蹤最近使用的檔案和資料夾
重要 API
- MostRecentlyUsedList \(英文\)
- FileOpenPicker \(英文\)
將檔案新增至您應用程式最近使用的清單 (MRU),以追蹤使用者經常存取的檔案。 平台會根據上次存取項目的時間排序項目,並在達到清單的 25 個項目限制時移除最舊的項目,以為您管理 MRU。 所有應用程式都有自己的 MRU。
您應用程式的 MRU 會由 StorageItemMostRecentlyUsedList 類別代表,其為您透過靜態 StorageApplicationPermissions.MostRecentlyUsedList 屬性取得。 MRU 項目會儲存為 IStorageItem 物件,因此 StorageFile 物件 (代表檔案) 和 StorageFolder 物件 (代表資料夾) 都可以新增至 MRU。
必要條件
了解通用 Windows 平台 (UWP) 應用程式的非同步程式設計
您可以參閱在 C# 或 Visual Basic 中呼叫非同步 API,以了解如何使用 C# 或 Visual Basic 撰寫非同步的應用程式。 若要了解如何使用 C++ 撰寫非同步的應用程式,請參閱 C++ 的非同步程式設計。
位置的存取權限
請參閱檔案存取權限。
-
挑選的檔案通常是使用者再再前往使用的相同檔案。
將挑選的檔案新增至 MRU
使用者挑選的檔案通常是他們重複前往使用的檔案。 因此,請考慮在挑選後立即將挑選的檔案新增至應用程式的 MRU。 方法如下。
Windows.Storage.StorageFile file = await picker.PickSingleFileAsync(); var mru = Windows.Storage.AccessCache.StorageApplicationPermissions.MostRecentlyUsedList; string mruToken = mru.Add(file, "profile pic");
StorageItemMostRecentlyUsedList.Add \(英文\) 是多載。 在此範例中,我們使用 Add(IStorageItem, String),以便將中繼資料與檔案產生關聯。 設定中繼資料可讓您記錄項目的用途,例如「設定檔圖片」。 您也可以呼叫 Add(IStorageItem),將檔案新增至 MRU 而不使用中繼資料。 將項目新增至 MRU 時,方法會傳回唯一識別的字串,稱為權杖,用來擷取項目。
提示
您需要此權杖才能從 MRU 擷取項目,因此請將它保存在別處。 如需應用程式資料的詳細資訊,請參閱管理應用程式資料。
使用權杖從 MRU 擷取項目
使用最適合您想要擷取的項目的擷取方法。
- 使用 GetFileAsync 擷取檔案作為 StorageFile。
- 使用 GetFolderAsync 擷取資料夾作為 StorageFolder。
- 使用 GetItemAsync 擷取泛型 IStorageItem,它可以代表檔案或資料夾。
以下說明如何取回我們剛才新增的檔案。
StorageFile retrievedFile = await mru.GetFileAsync(mruToken);
以下說明如何逐一查看所有項目以取得權杖和項目。
foreach (Windows.Storage.AccessCache.AccessListEntry entry in mru.Entries)
{
string mruToken = entry.Token;
string mruMetadata = entry.Metadata;
Windows.Storage.IStorageItem item = await mru.GetItemAsync(mruToken);
// The type of item will tell you whether it's a file or a folder.
}
AccessListEntryView 可讓您逐一查看 MRU 中的項目。 這些項目是 AccessListEntry 結構,其中包含項目的權杖和中繼資料。
當 MRU 已滿時,從 MRU 移除項目
到達 MRU 的 25 個項目限制且您嘗試新增項目時,系統會自動移除最久之前存取的項目。 因此,在新增項目之前,您永遠不需要移除項目。
未來存取清單
還有 MRU,您的應用程式也有未來存取清單。 藉由挑選檔案和資料夾,您的使用者會授與應用程式權限,以存取若未授與便可能無法存取的項目。 如果您將這些項目新增至未來存取清單,當您的應用程式稍後想要再次存取這些項目時,您將會保留該權限。 您應用程式的未來存取清單會由 StorageItemAccessList 類別代表,其為您透過靜態 StorageApplicationPermissions.FutureAccessList 屬性取得。
當使用者挑選項目時,請考慮將其新增至未來存取清單以及 MRU。
- FutureAccessList 最多可以保存 1000 個項目。 記住:它可以保存資料夾和檔案,因此有很多資料夾。
- 平台永遠不會為您移除 FutureAccessList 中的項目。 達到 1000 個項目的限制時,除非使用 Remove 方法騰出空間,否則無法新增其他項目。