|
|
| 594行目: |
594行目: |
| </syntaxhighlight> | | </syntaxhighlight> |
| <br> | | <br> |
| ==== TOMLファイルの修正 ====
| |
| 以下の例では、指定されたTOMLファイルを読み込み、以下に示す設定を変更して、同じファイルに上書きしている。<br>
| |
| <br>
| |
| * 非同期処理
| |
| *: ファイルの読み込みでは、await TOML.ParseAsync(reader)メソッドを使用している。
| |
| *: ファイルの書き込みでは、await toml.WriteToAsync(writer)メソッドを使用している。
| |
| * ストリーミング処理
| |
| *: StreamReaderクラスおよびStreamWriterクラスを使用して、ファイルをストリームとして読み書きしている。
| |
| * TOMLファイルの更新
| |
| *: UpdateConfigメソッドで、指定された変更を行っている。
| |
| *:* [application]セクション -> "version"キーの値を"1.1.0"に変更する。
| |
| *:* [logging]セクション -> "level"キーそのものを削除する。
| |
| *:* [features]セクション -> "enabled"キーの配列から"logout"を削除する。
| |
| *:* 2つ目の<nowiki>[[servers]]</nowiki>配列 -> "ip"キーの値を"192.168.1.10"に変更する。
| |
| <br>
| |
| <syntaxhighlight lang="c#">
| |
| using System;
| |
| using System.IO;
| |
| using System.Linq;
| |
| using System.Threading.Tasks;
| |
| using Tommy;
| |
|
| |
| class Program
| |
| {
| |
| static async Task Main(string[] args)
| |
| {
| |
| string filePath = "sample.toml"; // 修正するTOMLファイルのパス
| |
|
| |
| try
| |
| {
| |
| // TOMLファイルを非同期で読み込む
| |
| using (var reader = new StreamReader(filePath))
| |
| {
| |
| var toml = await TOML.ParseAsync(reader);
| |
|
| |
| // [application]セクションの"version"キーの値を"1.1.0"に変更
| |
| toml["application"]["version"] = "1.1.0";
| |
|
| |
| // [logging]セクションの"level"キーを削除
| |
| toml["logging"].Remove("level");
| |
|
| |
| // [features]セクションの"enabled"キーの配列から"logout"を削除
| |
| var enabledFeatures = toml["features"]["enabled"].AsArray;
| |
| enabledFeatures.Remove("logout");
| |
|
| |
| // 2つ目の[[servers]]配列の"ip"キーの値を"192.168.1.10"に変更
| |
| var servers = toml["servers"].AsArray;
| |
| if (servers.Count >= 2)
| |
| {
| |
| servers[1]["ip"] = "192.168.1.10";
| |
| }
| |
| else
| |
| {
| |
| Console.WriteLine("警告: 2つ目のサーバー情報が見つかりません。");
| |
| }
| |
|
| |
| // 変更した内容を非同期でファイルに書き込む
| |
| using (var writer = new StreamWriter(filePath))
| |
| {
| |
| await toml.WriteToAsync(writer);
| |
| }
| |
| }
| |
| }
| |
| catch (FileNotFoundException)
| |
| {
| |
| Console.WriteLine($"エラー: ファイル '{filePath}' が存在しない");
| |
| }
| |
| catch (TomlParseException ex)
| |
| {
| |
| Console.WriteLine($"エラー: TOMLファイルの解析に失敗 行 {ex.Line}, 列 {ex.Column}: {ex.Message}");
| |
| }
| |
| catch (IOException ex)
| |
| {
| |
| Console.WriteLine($"エラー: ファイルの読み書き中にIOエラーが発生: {ex.Message}");
| |
| }
| |
| catch (Exception ex)
| |
| {
| |
| Console.WriteLine($"予期せぬエラーが発生: {ex.Message}");
| |
| }
| |
| }
| |
| }
| |
| </syntaxhighlight>
| |
| <br><br> | | <br><br> |
|
| |
|