こんにちは。明月です。
この投稿はC#でini環境ファイルを使う方法に関する説明です。
C#で一般的な環境ファイルはApp.configファイルのXMLファイルです。
link - [C#] 環境設定ファイルを扱う方法(System.Configuration)
iniファイルはC++でよく使う環境ファイルの構造です。
セッションがあり、キーでデータを取得する構造です。でもC#もC++ライブラリを使うことができるのでiniファイルを読み取りや書き込みができます。
using System;
using System.IO;
using System.Text;
using System.Runtime.InteropServices;
namespace Example
{
public static class ConfigSystem
{
// CのDLLライブラリのImport
[DllImport("kernel32")]
// 関数のパラメータはsection名、キー名、値、ファイルパス
private static extern long WritePrivateProfileString(string section, string key, string val, string filePath);
// CのDLLライブラリのImport
[DllImport("kernel32")]
// 関数のパラメータはsection名、キー名、デフォルト値(sectionやキー、値がない場合、設定する値)、返却値(リターン値)、バッファサイズ、ファイルパス
private static extern int GetPrivateProfileString(string section, string key, string def, byte[] retVal, int size, string filePath);
// iniファイルを作成する関数
public static void WriteConfig(string file, string section, string key, string val)
{
WritePrivateProfileString(section, key, val, GetFile(file));
}
// iniファイルから値を取得する関数
public static string ReadConfig(string file, string section, string key)
{
// C# const char*はbyte配列に表現できる。
byte[] temp = new byte[1024];
// 値を取得
int ret = GetPrivateProfileString(section, key, null, temp, temp.Length, GetFile(file));
// iniは基本テキストファイル、ドキュメントフォーマットによるが、基本sjisだ。
return Encoding.Default.GetString(temp, 0, Array.IndexOf(temp, (byte)0));
}
// iniファイルパスを取得関数
private static string GetFile(string file)
{
// 事項するファイルのパス
return Path.Combine(AppDomain.CurrentDomain.BaseDirectory, file + ".ini");
}
}
class Program
{
//実行関数
static void Main(string[] args)
{
// config.iniファイルに「SectionTest」セッションで「data」キーで「日本語」の値を格納する。
ConfigSystem.WriteConfig("config", "SectionTest", "data", "日本語");
// config.iniファイルに「SectionTest」セッションで「data」キーの値を取得する。
Console.WriteLine(ConfigSystem.ReadConfig("config", "SectionTest", "data"));
Console.WriteLine("Press any key...");
Console.ReadKey();
}
}
}
WritePrivateProfileStringとGetPrivateProfileStringはC#のライブラリではなく、C++のライブラリの「kernel32」の関数です。
実行関数でiniファイルを書き込んで読み取るので同然「日本語」という結果が出ます。
config.iniファイルを確認しましょう。
config.iniファイル中で[SectionTest]のdataのキーで「日本語」という値があります。
iniファイルはプログラムだけで操作することではなく、直接にセッションやキー、値を設定すると上のGetPrivateProfileStringの関数で読み込むのが可能です。
ここまでC#でini環境ファイルを使う方法に関する説明でした。
ご不明なところや間違いところがあればコメントしてください。
「Devlopment note / C#」の他投稿
- [C#] Geckoライブラリを利用してウェブスクレイピングする方法2020/05/05 00:52:26
- [C#] PDFを作成する方法(iTextSharp)2020/05/03 10:22:40
- [C#] シリアライズ(Serialization)をする方法2020/04/30 19:32:04
- [C#] dynamicタイプの動的パラメータ-DynamicObject(WinFormでASP.MVCのViewBagオブジェクトを使用する方法)2020/04/29 22:41:32
- [C#] Stringの補間式(interpolation)2020/04/27 20:39:57
- [C#] Newtonsoft.JSONライブラリを利用してJsonデータ構造を扱う方法2020/04/23 20:19:53
- [C#] EMailを送信する方法(System.Net.Mail)2020/04/22 19:00:42
- [C#] ini環境ファイルを使う方法2020/04/22 00:09:39
- [C#] 環境設定ファイルを扱う方法(System.Configuration)2020/04/20 19:37:57
- [C#] Reflectionを利用してクラス複製する方法2020/04/17 00:34:33
- [C#] XMLをXPathを利用してデータを取得する方法2020/04/16 00:47:17
- [C#] NSoupライブラリを利用してXMLとHTMLをパーシングする方法2020/04/14 19:34:15
- [C#] 日付フォーマット2020/04/09 20:53:20
- [C#] ログライブラリ(log4net)を設定する方法2020/04/08 13:04:22
- [C#] Zipの圧縮ファイルを解凍するコードを作成する方法2020/04/07 11:17:44
最新投稿
- check2024/04/10 19:03:53
- [Java] 64.Spring bootとReactを連結する方法(Buildする方法)2022/03/25 21:02:18
- [Javascript] Node.jsをインストールしてReactを使う方法2022/03/23 18:01:34
- [Java] 63. Spring bootでcronスケジューラとComponentアノテーション2022/03/16 18:57:30
- [Java] 62. Spring bootでWeb-Filterを設定する方法(Spring Security)2022/03/15 22:16:37
- [Java] JWT(Json Web Token)を発行、確認する方法2022/03/14 19:12:58
- [Java] 61. Spring bootでRedisデータベースを利用してセッションクラスタリング設定する方法2022/03/01 18:20:52
- [Java] 60. Spring bootでApacheの連結とロードバランシングを設定する方法2022/02/28 18:45:48
- [Java] 59. Spring bootのJPAでEntityManagerを使い方2022/02/25 18:27:48
- [Java] 58. EclipseでSpring bootのJPAを設定する方法2022/02/23 18:11:10
- [Java] 57. EclipseでSpring bootを設定する方法2022/02/22 19:04:49
- [Python] Redisデータベースに接続して使い方2022/02/21 18:23:49
- [Java] Redisデータベースを接続して使い方(Jedisライブラリ)2022/02/16 18:13:17
- [C#] Redisのデータベースを接続して使い方2022/02/15 18:46:09
- [CentOS] Redisデータベースをインストールする方法とコマンドを使い方2022/02/14 18:33:07