ファイル操作の基本を紹介します。
アプリ側からディスクに保存されたファイルを取得したい場合などはFileOpenPickerクラスを用います。
FileOpenPickerはデスクトップアプリケーションのファイル選択ダイアログと似ていますが、SkyDriveなどのクラウドサービスからデータを選択することもできます。
ファイルを選択する際はOSに遷移が移り、ローカルのファイル、Web上のSkyDrive、はたまたカメラから画像を取得することができます。
以下のコードでFileOpenPickerを起動します。
フィルタリングするファイル拡張子や起動時の初期ディレクトリ(ピクチャーライブラリ)などを指定しています。
// using Windows.Storage.Pickers;
FileOpenPicker openPicker = new FileOpenPicker();
// 表示モードはリスト形式
//openPicker.ViewMode = PickerViewMode.List;
// 表示モードはサムネイル形式
openPicker.ViewMode = PickerViewMode.Thumbnail;
// ピクチャーライブラリーが起動時の位置
// その他候補はPickerLocationIdを参照
// http://msdn.microsoft.com/en-us/library/windows/apps/windows.storage.pickers.pickerlocationid
openPicker.SuggestedStartLocation = PickerLocationId.PicturesLibrary;
// jpg, jpeg, pngのファイル形式から選択
openPicker.FileTypeFilter.Add(".jpg");
openPicker.FileTypeFilter.Add(".jpeg");
openPicker.FileTypeFilter.Add(".png");
// ファイルオープンピッカーを起動する
StorageFile file = await openPicker.PickSingleFileAsync();
ViewModeプロパティでThumbnail(サムネイル)とList(リスト)が指定できます。
StorageFile file = await openPicker.PickSingleFileAsync();
で取得したファイルをStorageFileクラスに格納します。
(複数のファイルを選択したい場合はpickMultiFileAsyncメソッドを利用します)
取得したfileクラスからはファイル名やパスが取得できます。
画像として利用したい場合はStorageFileクラスのOpenAsyncメソッドからファイルストリームを取得します。
// FileOpenPickerクラスでファイルを取得する
FileOpenPicker openPicker = new FileOpenPicker();
// 表示モードはサムネイル形式
openPicker.ViewMode = PickerViewMode.List;
// 最初はピクチャーライブラリーから立ち上がる
openPicker.SuggestedStartLocation = PickerLocationId.PicturesLibrary;
openPicker.FileTypeFilter.Add(".jpg");
openPicker.FileTypeFilter.Add(".jpeg");
openPicker.FileTypeFilter.Add(".png");
StorageFile file = await openPicker.PickSingleFileAsync();
if (null != file)
{
// FileNameText,FilePathTextはXASMLで定義されたTextBlockコントロール
FileNameText.Text = file.Name;
FilePathText.Text = file.Path;
var stream = await file.OpenAsync(Windows.Storage.FileAccessMode.Read);
BitmapImage image = new BitmapImage();
image.SetSource(stream);
// FileImageはXAMLで定義されたコントロール
FileImage.Source = image;
}
else
{
FileNameText.Text = "選択されませんでした";
FilePathText.Text = "";
FileImage.Source = null;
}
実行結果は以下、取得したファイル名、ディレクトリ名、サムネイルなどが取得できます。
今回のソースコードはGitHubに公開してあります。
酢ろぐ:FileOpenPickerクラスを使ってファイルを開く
FileOpenPicker in Windows 8 XAML App
Please give us your valuable comment