Open1
[.NET MAUI] 設定ファイルの読み書き
アプリで設定値を保存するためにはMicrosoft.Maui.Storage
名前空間のPreferences
クラスがあるが、今回はアプリ固有のデータディレクトリにjson形式でファイルを保存して設定値を読み書きする。
アプリ固有のデータ保存用ディレクトリはFileSystem.Current.AppDataDirectory
にてアクセス可能。OSごとの具体的なファイルパスは下表の通り。
OS | ファイルパス |
---|---|
Windows | C:\Users[ユーザー名]\AppData\Local\Packages[ApplicationIdの値]_[英数文字列]\LocalState\ |
Mac | /Users/[ユーザー名]/Library/Containers/[ApplicationIdの値]/Data/Library/ |
Android | /data/user/0/[ApplicationIdの値]/files/ |
iOS | /var/mobile/Containers/Data/Application/[16進数文字列]/Library |
テキストファイルの読み書きはSystem.IO
名前空間のFile.ReadAllText
File.WriteAllText
が一番手っ取り早い。設定値保管用のモデルクラスをConfig
クラスとして、JsonSerializer.Serialize
で文字列化してconfig.json
に書き込む。
string json = JsonSerializer.Serialize(new Config
{
// キー = 値
});
// 設定ファイルのパス
string filePath = Path.Combine(FileSystem.Current.AppDataDirectory, "config.json");
File.WriteAllText(filePath, json);
ファイルから読み込んだ文字列をJsonSerializer.Deserialize
で設定値保管用のConfig
クラスに戻す。
// ファイル書き込み
Config config;
try
{
string json = File.ReadAllText(filePath);
config = JsonSerializer.Deserialize<Config>(json);
}
catch (Exception ex)
{
// System.IO.FileNotFoundException
// System.Text.Json.JsonException
config = new Config{
// キー = デフォルト値
};
}