「C Sharpの基礎 - INIファイル」の版間の差分

ナビゲーションに移動 検索に移動
347行目: 347行目:
<br>
<br>
==== INIファイルの読み込み ====
==== INIファイルの読み込み ====
以下の例では、ini-parserライブラリを使用して、INIファイルを非同期で読み込みしている。<br>
<br>
<syntaxhighlight lang="c#">
using System;
using System.IO;
using System.Threading.Tasks;
using IniParser;
using IniParser.Model;
public class IniParserReader
{
    private readonly FileIniDataParser _parser;
    private IniData _iniData;
    public IniParserReader()
    {
      _parser = new FileIniDataParser();
    }
    // INIファイルを非同期で読み込む
    public async Task ReadIniFileAsync(string filePath)
    {
      try
      {
          using (var fileStream = new FileStream(filePath, FileMode.Open, FileAccess.Read, FileShare.Read, 4096, true))
          using (var streamReader = new StreamReader(fileStream))
          {
            var fileContent = await streamReader.ReadToEndAsync();
            _iniData = _parser.Parser.Parse(fileContent);
          }
          Console.WriteLine("INIファイルの読み込みが完了");
      }
      catch (FileNotFoundException)
      {
          Console.WriteLine("指定されたファイルが存在しない");
      }
      catch (IOException ex)
      {
          Console.WriteLine($"ファイルの読み込み中にエラーが発生: {ex.Message}");
      }
      catch (Exception ex)
      {
          Console.WriteLine($"予期せぬエラーが発生: {ex.Message}");
      }
    }
    // 値を取得するメソッド
    public string GetValue(string section, string key)
    {
      return _iniData?[section]?[key];
    }
    // 読み込んだINIファイルの内容を表示するメソッド
    public void DisplayContent()
    {
      if (_iniData == null)
      {
          Console.WriteLine("INIファイルが読み込まれていない");
          return;
      }
      foreach (var section in _iniData.Sections)
      {
          Console.WriteLine($"[{section.SectionName}]");
          foreach (var key in section.Keys)
          {
            Console.WriteLine($"{key.KeyName}={key.Value}");
          }
          Console.WriteLine();
      }
    }
}
</syntaxhighlight>
<br>
上記のクラスを使用する場合は、以下に示すようにインスタンスを生成して、メソッドを実行する。<br>
<syntaxhighlight lang="c#">
var iniReader = new IniParserReader();
// INIファイルの読み込み
await iniReader.ReadIniFileAsync("sample.ini");
// 値の取得
string value = iniReader.GetValue("セクション名", "キー名");
// 取得した値の表示
iniReader.DisplayContent();
</syntaxhighlight>
<br>


<br>
==== INIファイルの書き込み ====
==== INIファイルの書き込み ====


案内メニュー