libro
www.tuyano.com
C#ではじめるWindows 8アプリ開発入門

設定情報とデータの保存 (5/5)

作成:2014-03-01 10:56
更新:2014-03-01 11:00

■テキストファイルを利用する

では、実際の利用例を挙げておきましょう。先ほど作成した設定保管のサンプルを書き換えて、テキストファイルに保存するようにしてみます。作成したButton1_ClickButton2_Clickメソッドを下のリスト欄にあるように書き換えてください。

ここでは、テキストファイルの保存と読み込みを以下のように行っています。


●テキストファイルへの保存
StorageFile savefile = await folder.
    CreateFileAsync("sample.txt", CreationCollisionOption.ReplaceExisting);
await FileIO.WriteTextAsync(savefile, textBox1.Text);

●テキストファイルからの読み込み
StorageFile readFile = await folder.GetFileAsync("sample.txt");
textBox1.Text = await FileIO.ReadTextAsync(readFile);

一つ補足しておきたいのが、CreateFileAsyncの第2引数です。第2引数にはオプションとしてCreationCollisionOption.ReplaceExistingという値を指定してあります。これは、既にファイルが存在するときは新たにファイルを作成し置き換えることを示すものです。

こんな具合に、ファイルが既にあった場合の挙動の指定を第2引数で行うことができるのですね。このCreationCollisionOption列挙体には以下のような値が用意されています。

GenerateUniqueName――指定した名前のファイルやフォルダがあった場合には末尾に番号をつけて自動的にユニークな名前にします
ReplaceExisting――同じ名前のファイルやフォルダがあった場合は置き換えます
FailIfExists――同じ名前のファイルやフォルダが既にある場合はエラーを返します
OpenIfExists――同じ名前のファイルやフォルダがあった場合はそれを返します

例えばユーザーがファイル名を指定して保存するような場合は、勝手にファイルを置き換えては困りますからGenerateUniqueNameFailIfExistsを指定しておくとよいでしょう。その場の状況に応じて使用してください。

※プログラムリストが表示されない場合

AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。

●プログラム・リスト●

        private async void Button1_Click(object sender, RoutedEventArgs e)
        {
            StorageFolder folder = ApplicationData.Current.LocalFolder;
            StorageFile savefile = await folder.CreateFileAsync("sample.txt", 
                CreationCollisionOption.ReplaceExisting);
            await FileIO.WriteTextAsync(savefile, textBox1.Text);
            MessageDialog dlog = new MessageDialog("Message", "ファイルに保存しました。");
            await dlog.ShowAsync();
        }

        private async void Button2_Click(object sender, RoutedEventArgs e)
        {
            try
            {
                StorageFolder folder = ApplicationData.Current.LocalFolder;
                StorageFile readFile = await folder.GetFileAsync("sample.txt");
                textBox1.Text = await FileIO.ReadTextAsync(readFile);
            }
            catch (Exception)
            { }
        }
※関連コンテンツ

「C#ではじめるWindows 8アプリ開発入門」に戻る