2017年3月15日水曜日

Xamarin.Forms:ユーザーデータを保存するには?

Xamarin.Forms:ユーザーデータを保存するには?

PCL Projectでテキストファイルを保存する方法。

元ネタは、@ITより

Nugetより、PCLStorageをinstall

const string SubFolderName = "SampleData";
const string TextFileName = "Sample.txt";

// ユーザーデータを読み取るメソッド
async Task<string> LoadTextAsync()
{
  // ユーザーデータ保存フォルダー
  PCLStorage.IFolder localFolder = PCLStorage.FileSystem.Current.LocalStorage;

  // サブフォルダーを作成、または、取得する
  PCLStorage.IFolder subFolder
    = await localFolder.CreateFolderAsync(SubFolderName,
                          PCLStorage.CreationCollisionOption.OpenIfExists);

  // ファイルを取得する
  PCLStorage.IFile file = await subFolder.GetFileAsync(TextFileName);

  // テキストファイルを読み込む
  // ファイル冒頭に「using PCLStorage;」が必要
  return await file.ReadAllTextAsync();
}
ユーザーデータを読み取るコードの例(C#)
ユーザーデータ保存フォルダーの下の「SampleData」フォルダーにある「Sample.txt」ファイルを読み取って、そのファイルに保存されている文字列を返すメソッド。非同期メソッドなので、呼び出す側はawaitキーワードで終了を待機する必要がある。
また、ファイルがないときは、ファイルを取得するところでFileNotFoundException例外(PCLStorage.Exceptions名前空間)が発生する。呼び出す側で正しく例外をトラップしてほしい。


// 定数定義を再掲
//const string SubFolderName = "SampleData";
//const string TextFileName = "Sample.txt";

// ユーザーデータを書き出すメソッド
async Task<string> SaveTextAsync(string text)
{
  // ユーザーデータ保存フォルダー
  PCLStorage.IFolder localFolder = PCLStorage.FileSystem.Current.LocalStorage;

  // サブフォルダーを作成、または、取得する
  PCLStorage.IFolder subFolder
    = await localFolder.CreateFolderAsync(SubFolderName,
                          PCLStorage.CreationCollisionOption.OpenIfExists);

  // ファイルを作成、または、取得する
  PCLStorage.IFile file
    = await subFolder.CreateFileAsync(TextFileName,
                        PCLStorage.CreationCollisionOption.ReplaceExisting);

  // テキストをファイルに書き込む
  // 冒頭に「using PCLStorage;」が必要
  await file.WriteAllTextAsync(text);

  return file.Path;
}
ユーザーデータを書き出すコードの例(C#)
引数の文字列を、ユーザーデータ保存フォルダーの下の「SampleData」フォルダーにある「Sample.txt」ファイルに書き出すメソッド。非同期メソッドなので、呼び出す側はawaitキーワードで終了を待機する必要がある。
このメソッドは、保存したファイルのフルパスを返すようにしてある。

0 件のコメント:

コメントを投稿