[UWP][ファイル操作] 最近使用したファイルを取得する(2)

前回と前々回の記事で最近使用したファイルの登録と取得方法について見ていきました。

前回の記事で、説明した最近使用したファイルの取得方法では、最後に使用したファイルしか取得できません。

今回は、最近使用したファイル一覧に登録されているすべてのファイルを取得する方法を見ていきます。

はじめにMostRecentlyUsedListプロパティを取得します。続いてforeach構文を使用して、取得したオブジェクトのEntitiesから1つずつ最近使用したファイルを取得します。

最近使用したファイルは、MostRecentlyUsedListプロパティのGetItemAsyncメソッドで取得できます。戻り値のデータ型はIStorageItemで、Nameプロパティでファイル名を、Pathプロパティでフルパスを取得することができます。

var mru = Windows.Storage.AccessCache.StorageApplicationPermissions.MostRecentlyUsedList;

foreach (Windows.Storage.AccessCache.AccessListEntry entry in mru.Entries)
{
    string token = entry.Token;
    string metadata = entry.Metadata;
    Windows.Storage.IStorageItem item = await mru.GetItemAsync(token);

    // ファイル名のみ取得
    string fileName = item.Name;
    // ファイル名を含むフルパスを取得
    string fullPath = item.Path;
}

[UWP][ファイル操作] 最近使用したファイルを取得する(1)

前回に記事で、最近使用したファイル一覧へのファイルの追加方法について学びました。

今回は、最近使用したファイル一覧に最後に追加されたフィルをを取得する方法を見ていきます。

はじめに、前回Addメソッドを実行したときの戻り値が返したトークンがあることを確認します。

トークンがある場合には、前回紹介したMostRecentlyUsedListプロパティを取得し、GetFileAsyncメソッドを使用して、最近使用したファイルを取得します。このメソッドの引数にはトークンを指定します。戻り値は、トークンに対応する最近使用したファイルが返されます。

ファイル名を取得したい場合はDisplayNameプロパティを、フルパスを取得したい場合はPathプロパティを使用します。

// トークンがあれば
if (!string.IsNullOrEmpty(_mruToken))
{
    var mru = Windows.Storage.AccessCache.StorageApplicationPermissions.MostRecentlyUsedList;

    // 最近使ったファイルを取得する
    Windows.Storage.StorageFile recentlyFile = await mru.GetFileAsync(_mruToken);

    // ファイル名のみ取得
    string fileName = recentlyFile.DisplayName;

    // ファイル名を含むフルパスを取得
    string fullPath = recentlyFile.Path;
}

[UWP][ファイル操作] 最近使用したファイルの登録

今回は、最近使用したファイル一覧へ、使用したファイルを追加する方法について見ていきます。

最近使用したファイルは StorageApplicationPermissions クラスの MostRecentlyUsedListプロパティで管理します。このプロパティにはAddメソッドがあり、第1引数に最近使用したファイル一覧へ登録するファイル名を、第2引数にはメタデータを指定します。このメタデータはstring型で、主に一覧の使用目的等を入力します。Addメソッドは第2引数を省略して使用することも可能です。Addメソッドを使用して一覧への登録が完了すると、ファイル一覧を取得するときに一意に識別をできるようにするためのトークンが返されます。

以下に、最近使用したファイルを登録する例を示します。

ファイルピッカーで選択したファイルを、一覧に登録します。

private string _mruToken = string.Empty;

// ファイルピッカーの準備
var filePicker = new Windows.Storage.Pickers.FileOpenPicker();
filePicker.FileTypeFilter.Add(".txt");

// ファイルピッカーでユーザーにファイルを選択させる
Windows.Storage.StorageFile file = await filePicker.PickSingleFileAsync();

// 最近使用したファイル一覧を管理するプロパティの準備
var mru = Windows.Storage.AccessCache.StorageApplicationPermissions.MostRecentlyUsedList;

// 最近使用したファイル一覧へファイルの登録
_mruToken = mru.Add(file, "MyApp");