[C#] INI文件的输入和输出

using System;
using System.IO;
using System.Text;
using System.Runtime.InteropServices;

public class IniFile {
  [DllImport("KERNEL32.DLL")]
  public static extern uint
    GetPrivateProfileString(string lpAppName,
    string lpKeyName, string lpDefault,
    StringBuilder lpReturnedString, uint nSize,
    string lpFileName);

  [DllImport("KERNEL32.DLL",
      EntryPoint="GetPrivateProfileStringA")]
  public static extern uint
    GetPrivateProfileStringByByteArray(string lpAppName,
    string lpKeyName, string lpDefault,
    byte [] lpReturnedString, uint nSize,
    string lpFileName);

  [DllImport("KERNEL32.DLL")]
  public static extern uint
    GetPrivateProfileInt( string lpAppName,
    string lpKeyName, int nDefault, string lpFileName );

  [DllImport("KERNEL32.DLL")]
  public static extern uint WritePrivateProfileString(
    string lpAppName,
    string lpKeyName,
    string lpString,
    string lpFileName);

  public static void Main(string[] args)
  {
    string iniPath = System.IO.Path.Combine(
        new FileInfo(Environment.CommandLine.Replace( "\"", "" ))
        .Directory.ToString(),"sample.ini");

    // 文字列を読み出す
    StringBuilder sb = new StringBuilder(1024);
    GetPrivateProfileString("セクション1", "キー1",
            "default", sb, (uint)sb.Capacity, iniPath);
    Console.WriteLine("セクション1のキー1の値: {0}",
            sb.ToString());

    // 整数値を読み出す
    uint resultValue = GetPrivateProfileInt(
                "セクション2", "キー2", 0, iniPath);
    Console.WriteLine("セクション2のキー2の値: {0}",
            resultValue);

    // キーと値を書き加える
    WritePrivateProfileString(
        "セクション3", "キー1", "文字列の値3", iniPath);
    WritePrivateProfileString(
        "セクション3", "キー2", "543216789", iniPath);

    // 指定セクションのキーの一覧を得る
    byte [] ar1 = new byte[1024];
    uint resultSize1
          = GetPrivateProfileStringByByteArray(
                "セクション3", null, "default", ar1,
                (uint)ar1.Length, iniPath);
    string result1 = Encoding.Default.GetString(
                            ar1, 0, (int)resultSize1-1);
    string [] keys = result1.Split('\0');
    foreach (string key in keys) {
      Console.WriteLine(
        "セクション3に含まれるキー名: {0}", key);
    }

    // 1つのキーと値のペアを削除する
    WritePrivateProfileString(
        "セクション3", "キー1", null, iniPath);

    // 指定セクション内の全てのキーと値のペアを削除する
    WritePrivateProfileString(
        "セクション3", null, null, iniPath);

  }
} 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值