[UWP][ファイル操作] ファイルが保存できたかを確認する

スポンサーリンク

前回に引き続き、今回もファイルの保存について見ていきます。

前回までのコードは以下の通りです。

private async void btnSave_Click(object sender, RoutedEventArgs e)
{
    var filePicker = new Windows.Storage.Pickers.FileSavePicker();

    // ユーザーが保存する場所
    filePicker.SuggestedStartLocation =
        Windows.Storage.Pickers.PickerLocationId.DocumentsLibrary;

    // 拡張子の種類を追加
    filePicker.FileTypeChoices.Add("テキストファイル", new List<string>() { ".txt" });
    filePicker.FileTypeChoices.Add("リッチテキストファイル", new List<string>() { ".rtf" });

    // ファイル名の候補
    filePicker.SuggestedFileName = "新しいドキュメント";

    // 名前を付けて保存ダイアログを表示
    Windows.Storage.StorageFile file = await filePicker.PickSaveFileAsync();

    if (file != null)
    {
        await Windows.Storage.FileIO.WriteTextAsync(file, textBox.Text);
    }
}

今回は、WriteTextAsyncメソッドでファイル保存命令を実行後、ファイル保存ができたかを確認する処理を追加します。

ファイルが保存できたかどうかを確認するにはCachedFileManager.CompleteUpdatesAsyncメソッドを使用します。

このメソッドの引数には、名前を付けて保存ダイアログの戻り値を渡します。

ファイルが正常に保存できた場合は、CachedFileManager.CompleteUpdatesAsyncメソッドはWindows.Storage.Provider.FileUpdateStatus.Completeを返します。よってif文で状態を確認し、正常に保存できた場合の処理、保存に失敗したい場合の処理を記述できるようになります。

コード例を以下に示します。

Windows.Storage.Provider.FileUpdateStatus status =
    await Windows.Storage.CachedFileManager.CompleteUpdatesAsync(file);

if (status == Windows.Storage.Provider.FileUpdateStatus.Complete)
{
    // 正常に保存された場合の処理
}
else
{
    // 保存できなかった場合の処理
}

コメント

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