NonSoft

環境設定(XML)ファイルを読込/保存する
サンプル(C#.NET)


 サンプル(ソース/コード)
環境設定ファイル(VB6のiniファイル相当)の読込/保存するサンプル(VB.NET)です。C#.NETでは通常XML
ファイルで実現するようです。環境設定ファイルが無いプログラムはあまり無いと思うので、プログラム
を作る最初の作業としてこの処理をコピペするようにすると思います。このサンプルで保存するファイル
はXML形式でシリアライズと言う方法を使用しています。

VB.NET版のサンプルは標準モジュールで作成しているのですが、C#.NET版ではクラスで実現しています。
このクラスはpublic宣言している事に注意してください。

VB.NET版はこちら「環境設定ファイルを読込/保存するサンプル(VB.NET)」です。

★クラス(Class1.cs)
using System;
using System.Collections.Generic;
using System.Text;
using System.IO;
using System.Xml.Serialization;

public class Class1
{
    /// <summary>
    /// 環境設定データのフォルダ名
    /// </summary>
    private const String DEF_FLD = "Env";

    /// <summary>
    /// 環境設定データのファイル名
    /// </summary>
    private const String DEF_FIL = "EnvInfo.xml";

    /// <summary>
    /// 環境設定データ
    /// </summary>
    /// <remarks></remarks>
    public class EnvData
    {
        /// <summary>
        /// 環境設定項目1
        /// </summary>
        /// <remarks></remarks>
        public int val1 = 123;

        /// <summary>
        /// 環境設定項目2
        /// </summary>
        /// <remarks></remarks>
        public String val2 = "abc";
    }
    public static EnvData EnvDt = new EnvData();

    /// <summary>
    /// 環境初期設定
    /// </summary>
    /// <remarks></remarks>
    public static void EnvInitialize()
    {
        // 環境設定データの読込
        ReadEnv();
    }

    /// <summary>
    /// 環境設定データのファイル保存
    /// </summary>
    /// <remarks></remarks>
    private static void SaveEnv()
    {
        StreamWriter sw = null;
        try
        {
            // 環境設定ファイルのPATH設定
            String AppPath = System.AppDomain.CurrentDomain.BaseDirectory;
            String SettingPath = AppPath + DEF_FLD + "\\" + DEF_FIL;

            // 環境設定フォルダ作成
            if (Directory.Exists(DEF_FLD) == false)
            {
                Directory.CreateDirectory(AppPath + DEF_FLD);
            }

            // 環境設定データ保存
            sw = new StreamWriter(SettingPath, false, Encoding.Default);
            XmlSerializer serializer = new XmlSerializer(typeof(EnvData));
            serializer.Serialize(sw, EnvDt);

        }
        catch (Exception ex)
        {
            System.Diagnostics.Debug.Write(ex);
        }
        finally
        {
            if (sw != null) sw.Close();
        }
    }

    /// <summary>
    /// 環境設定データのファイル読込
    /// </summary>
    /// <remarks></remarks>
    private static void ReadEnv()
    {
        StreamReader sr = null;
        try
        {
            // 環境設定ファイルのPATH設定
            String AppPath = System.AppDomain.CurrentDomain.BaseDirectory;
            String SettingPath = AppPath + DEF_FLD + "\\" + DEF_FIL;

            if (File.Exists(SettingPath))
            {
                // 環境設定データ読込
                sr = new StreamReader(SettingPath, Encoding.Default);
                XmlSerializer serializer = new XmlSerializer(typeof(EnvData));
                EnvDt = (EnvData)(serializer.Deserialize(sr));
            }
            else
            {
                // 環境設定ファイルが存在しない時は作成
                SaveEnv();
            }

        }
        catch (Exception ex)
        {
            System.Diagnostics.Debug.Write(ex);
        }
        finally
        {
            if (sr != null) sr.Close();
        }
    }
}

★フォームモジュール(Form1.cs)
private void Form1_Load(object sender, EventArgs e)
{
    // 環境初期設定
    Class1.EnvInitialize();
    System.Diagnostics.Debug.WriteLine(Class1.EnvDt.val1);
    System.Diagnostics.Debug.WriteLine(Class1.EnvDt.val2);
}