Open1

[.NET MAUI] 設定ファイルの読み書き

GomitaGomita

アプリで設定値を保存するためには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{
		// キー = デフォルト値
	};
}