次の方法で共有


最近使ったファイルやフォルダーの追跡

重要な API

ユーザーが頻繁にアクセスするファイルを追跡するには、アプリの最近使用したリスト (MRU) にファイルを追加します。 プラットフォームは、最後にアクセスされた日時に基づいて項目を並べ替え、リストの 25 項目の制限に達したときに最も古い項目を削除することで、MRU を管理します。 すべてのアプリに独自の MRU があります。

アプリの MRU は StorageItemMostRecentlyUsedList クラスによって表されます。これは、静的 StorageApplicationPermissions.MostRecentlyUsedList プロパティから取得します。 MRU 項目は IStorageItem オブジェクトとして格納されるため、 StorageFile オブジェクト (ファイルを表す) と StorageFolder オブジェクト (フォルダーを表す) の両方を MRU に追加できます。

 完全なサンプルについては、 ファイル ピッカーのサンプルファイル アクセスのサンプルを参照してください。

前提条件

  • WinUI アプリの非同期プログラミングについて

    C# で非同期アプリを記述する方法については、「C # または Visual Basic での非同期 API の呼び出し」を参照してください。 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) を使用します。 メタデータを設定すると、"profile pic" などのアイテムの目的を記録できます。 Add(IStorageItem) を呼び出すことで、メタデータなしで MRU にファイルを追加することもできます。 MRU に項目を追加すると、メソッドはトークンと呼ばれる一意の識別文字列を返します。トークンは、アイテムの取得に使用されます。

ヒント

MRU から項目を取得するにはトークンが必要になるため、どこかに保持します。 アプリ データの詳細については、「アプリケーション データ の管理」を参照してください。

トークンを使用して MRU から項目を取得する

取得する項目に最も適した取得方法を使用します。

追加したファイルを取得する方法を次に示します。

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 の 25 項目の制限に達し、新しい項目を追加しようとすると、最も長い時間前にアクセスされたアイテムが自動的に削除されます。 そのため、新しいアイテムを追加する前にアイテムを削除する必要はありません。

将来のアクセスリスト

MRU と同様に、アプリには将来のアクセス リストもあります。 ファイルとフォルダーを選択することで、ユーザーは、アクセスできない可能性があるアイテムにアクセスするためのアクセス許可をアプリに付与します。 これらの項目を将来のアクセスリストに追加した場合、アプリが後でそれらの項目に再度アクセスする場合は、そのアクセス許可が保持されます。 アプリの将来のアクセス リストは、静的 StorageApplicationPermissions.FutureAccessList プロパティから取得した StorageItemAccessList クラスによって表されます。

ユーザーが項目を選択した場合は、将来のアクセス リストと MRU に項目を追加することを検討してください。

  • FutureAccessList には、最大 1,000 個のアイテムを保持できます。 覚えておいてください。フォルダーだけでなくファイルも保持できるため、多くのフォルダーになります。
  • このプラットフォームでは、 FutureAccessList からアイテムが削除されることはありません。 1,000 項目の制限に達すると、 Remove メソッドを使用してスペースを入れるまで、別の項目を追加することはできません。