[UWP][全般] アプリデータをファイルで読み書きする

スポンサーリンク

以前、「アプリケーションデータの場所を取得する」の記事でアプリデータ用のファイルが保存されるディレクトリの取得方法について説明しました。

今回はこのディレクトリに対して、アプリデータをファイルに書き込んだり読み込んだりする方法について見て行きましょう。

データを書き込む場合は、はじめにファイルを作成します。ファイルを作成するにはStorageFolderクラスのCreateFileAsyncメソッドを使用します。第1引数に作成するファイル名、第2引数にオプションを指定します。このオプションはすでにファイルが存在する場合に上書き保存する(ReplaceExisting)といった、CreationCollisionOption列挙体の値を指定します。あとは、作成したファイルへデータを書き込みます。データを書き込むにはFileIOクラスのWriteTextAsyncメソッドを使用します。第1引数には作成したファイルを、第2引数には書き込むデータを指定します。

続いてデータの読み込みについて見ていきましょう。データを読み込む場合は、StorageFolderクラスのReadTextAsyncメソッドを使用します。引数には、読み込むデータが書かれているファイル名を指定します。次にFileIOクラスのReadTextAsyncメソッドを使用してデータを読み込みます。引数には読み取るファイルを指定します。

以下に読み書きの例を示します。MainPage.xamlにはButton2つとTextBoxを1つ配置します。

public sealed partial class MainPage : Page
{
    // 保存先のディレクトリを取得
    Windows.Storage.StorageFolder localFolder =
        Windows.Storage.ApplicationData.Current.LocalFolder;

    public MainPage()
    {
        this.InitializeComponent();
    }

    // データの読み込み
    private async void btnGetData_Click(object sender, RoutedEventArgs e)
    {
        try
        {
            Windows.Storage.StorageFile sampleFile = await localFolder.GetFileAsync("appData.txt");
            String myData = await Windows.Storage.FileIO.ReadTextAsync(sampleFile);

            txtData.Text = myData;
        }
        catch (Exception)
        {
            // データが存在しない場合の処理
        }

    }

    // データの書き込み
    private async void btnDataSave_Click(object sender, RoutedEventArgs e)
    {
        // データ書き込み先のファイルを作成
        //(ファイル作成時のオプションは、既存の入るがある場合に置換する)
        Windows.Storage.StorageFile appFile = 
            await localFolder.CreateFileAsync("appData.txt", Windows.Storage.CreationCollisionOption.ReplaceExisting);

        // 作成したファイルへのデータ書き込み
        await Windows.Storage.FileIO.WriteTextAsync(appFile, txtData.Text;
    }
}

実行例

 

 

コメント

タイトルとURLをコピーしました