MENU

C# iniファイルを読み込む方法

iniファイルは、アプリケーションの設定を保存するための簡単で読みやすいフォーマットです。C#でプログラムを開発する際、iniファイルから設定を読み込む必要がしばしば発生します。この記事では、C#を使ってiniファイルを読み込む方法を、初心者にも分かりやすく解説します。

目次

iniファイルとは

まず、典型的なiniファイルの構造を見てみましょう:

[AppSettings]
Language=Japanese
Theme=Dark

[UserPreferences]
AutoSave=true
FontSize=12

iniファイルは、[セクション名]で始まるセクションと、その下にキー=値の形式で書かれる設定項目で構成されています。

C#でiniファイルを読み込む

C#には、iniファイルを直接扱うための組み込み関数がありません。そのため、ファイルを直接読み込んで解析する必要があります。以下に、iniファイルを読み込むための基本的なコード例を示します:

using System;
using System.Collections.Generic;
using System.IO;

public class IniFileReader
{
    private Dictionary<string, Dictionary<string, string>> iniContent;

    public IniFileReader(string filePath)
    {
        iniContent = new Dictionary<string, Dictionary<string, string>>();
        ReadIniFile(filePath);
    }

    private void ReadIniFile(string filePath)
    {
        string currentSection = "";
        foreach (string line in File.ReadLines(filePath))
        {
            string trimmedLine = line.Trim();
            if (string.IsNullOrWhiteSpace(trimmedLine) || trimmedLine.StartsWith(";"))
            {
                continue; // 空行やコメントをスキップ
            }

            if (trimmedLine.StartsWith("[") && trimmedLine.EndsWith("]"))
            {
                currentSection = trimmedLine.Substring(1, trimmedLine.Length - 2);
                iniContent[currentSection] = new Dictionary<string, string>();
            }
            else
            {
                string[] parts = trimmedLine.Split(new[] { '=' }, 2);
                if (parts.Length == 2)
                {
                    string key = parts[0].Trim();
                    string value = parts[1].Trim();
                    iniContent[currentSection][key] = value;
                }
            }
        }
    }

    public string GetValue(string section, string key)
    {
        if (iniContent.ContainsKey(section) && iniContent[section].ContainsKey(key))
        {
            return iniContent[section][key];
        }
        return null;
    }

    public static void Main()
    {
        string iniFilePath = @"C:\path\to\your\file.ini";
        IniFileReader reader = new IniFileReader(iniFilePath);

        string language = reader.GetValue("AppSettings", "Language");
        string theme = reader.GetValue("AppSettings", "Theme");
        string autoSave = reader.GetValue("UserPreferences", "AutoSave");

        Console.WriteLine($"Language: {language}");
        Console.WriteLine($"Theme: {theme}");
        Console.WriteLine($"AutoSave: {autoSave}");
    }
}

このコードの主なポイントは以下の通りです:

  1. File.ReadLines(filePath) を使用して、iniファイルを1行ずつ読み込みます。
  2. 各行を解析し、セクション、キー、値を抽出します。
  3. 抽出したデータを Dictionary<string, Dictionary<string, string>> 構造に保存します。
    • 外側の Dictionary のキーはセクション名です。
    • 内側の Dictionary のキーと値は、各セクション内のキーと値のペアです。
  4. GetValue メソッドを使用して、特定のセクションとキーの値を取得できます。

使用例

このコードを使用して、iniファイルから設定を読み込み、表示する例を示します:

string iniFilePath = @"C:\path\to\your\file.ini";
IniFileReader reader = new IniFileReader(iniFilePath);

string language = reader.GetValue("AppSettings", "Language");
string theme = reader.GetValue("AppSettings", "Theme");
string autoSave = reader.GetValue("UserPreferences", "AutoSave");

Console.WriteLine($"Language: {language}");
Console.WriteLine($"Theme: {theme}");
Console.WriteLine($"AutoSave: {autoSave}");

この例では、指定されたパスのiniファイルから設定を読み込み、コンソールに出力します。

注意点

  1. ファイルパスが正しいことを確認してください。
  2. ファイルへのアクセス権限があることを確認してください。
  3. iniファイルの形式が正しいことを前提としています。実際の使用では、より堅牢なエラーハンドリングが必要です。

まとめ

C#でiniファイルを読み込む方法として、以下のポイントがあります:

  1. ファイルを1行ずつ読み込む
  2. 各行を解析してセクション、キー、値を抽出する
  3. 抽出したデータを適切なデータ構造に保存する
  4. 必要に応じて、保存したデータにアクセスする

この方法を使用することで、iniファイルから設定を効率的に読み込み、アプリケーションで利用できます。設定ファイルの管理や、レガシーシステムとの連携など、様々な場面で活用できるでしょう。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

目次