Windowsストアアプリ入門 vol1.ファイル操作

水曜日 , 28, 3月 2012 Leave a comment

 ファイル操作の基本を紹介します。

 

FileOpenPickerクラス

 

 アプリ側からディスクに保存されたファイルを取得したい場合などはFileOpenPickerクラスを用います。

 FileOpenPickerはデスクトップアプリケーションのファイル選択ダイアログと似ていますが、SkyDriveなどのクラウドサービスからデータを選択することもできます。

ファイル選択画面(制御はOSに切り替わる)

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(リスト)が指定できます。

PickerViewMode.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に公開してあります。

 FilePickerSample

 

参考

 

酢ろぐ:FileOpenPickerクラスを使ってファイルを開く

FileOpenPicker in Windows 8 XAML App

 


Please give us your valuable comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です