かずきのBlog@hatena

日本マイクロソフトに勤めています。XAML + C#の組み合わせをメインに、たまにASP.NETやJavaなどの.NET系以外のことも書いています。掲載内容は個人の見解であり、所属する企業を代表するものではありません。

指定したフォルダ以下の任意の拡張子のファイルをゲットしたい!

という要望を受けたのでカリっとコード片を。

var picker = new FolderPicker();
// なぜファイルタイプの指定がいるのだ
picker.FileTypeFilter.Add(".txt");
// フォルダを"ユーザ"に選択してもらう
var folder = await picker.PickSingleFolderAsync();
// ファイルを問合せるクエリを作成
var q = folder.CreateFileQuery();
q.ApplyNewQueryOptions(
  // jpgファイルを配下のフォルダ全部対象にとってくる
  new QueryOptions(
    CommonFileQuery.DefaultQuery, 
    new[] { ".jpg" }) 
  { 
    FolderDepth = FolderDepth.Deep 
  });
// 対象ファイルくださいな
var fs = await q.GetFilesAsync();

// 煮るなり焼くなり好きにしてください
foreach (var f in fs)
{
    // StorageFileのパスを表示
    Debug.WriteLine(f.Path);
}