C\#에서 INI 파일 을 읽 고 쓰 는 방법의 예

3817 단어 읽 기와 쓰기INI
보통 C\#XML 기반 프로필 을 사용 하지만 필요 하 다 면 오래된 시스템 을 병행 하려 면 INI 파일 을 사용 해 야 할 수도 있 습 니 다.
그러나 C\#자 체 는 INI 파일 을 읽 고 쓰 는 API 가 없 으 며,시스템 자체 API 를 호출 하 는 방식 으로 만 필요 한 목적 을 달성 할 수 있다.
읽 기와 쓰기 에 대응 하 는 방법 은 GetPrivate Profilestring 과 Write Private Profilestring 이다.
GetPrivate ProfileString 의 매개 변수:
lpAppName―section 의 이름
lpKeyName―key 의 이름
lpDefault―lpKeyName 을 찾 지 못 하면 이 값 을 lpReturned String 에 복사 합 니 다.
lpReturned String―결 과 를 되 돌려 주 는 값
nSize―lpReturned String 의 문자 길이
lpFileName―INI 파일 이름
Write PrivateProfilestring 의 매개 변수:
lpAppName―section 의 이름
lpKeyName―key 의 이름
lpString―lpKeyName 에 대응 하 는 값
lpFileName―INI 파일 이름
실제 코드 는 다음 과 같다.

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

namespace INIDemo
{
    class Program
    {
        static void Main(string[] args)
        {
            WritePrivateProfileString("Demo", "abc", "123", "c:\\demo.ini");

            StringBuilder temp = new StringBuilder();
            GetPrivateProfileString("Demo", "abc", "", temp, 255, "c:\\demo.ini");
            Console.WriteLine(temp);

            Console.ReadLine();
        }

        [DllImport("kernel32", CharSet = CharSet.Unicode, SetLastError = true)]
        private static extern bool WritePrivateProfileString(
            string lpAppName, string lpKeyName, string lpString, string lpFileName);

        [DllImport("kernel32", CharSet = CharSet.Unicode, SetLastError = true)]
        private static extern int GetPrivateProfileString(
            string lpAppName, string lpKeyName, string lpDefault, StringBuilder lpReturnedString,
            int nSize, string lpFileName);
    }
}
프로그램 이 실 행 된 후 INI 파일 의 내용 은 다음 과 같 습 니 다.

[Demo]
abc=123
이것 은 상대 적 으로 간단 한 방법 이다.만약 비 위탁 관리 방법 을 사용 하고 싶 지 않다 면,너 도 다른 비교적 번 거 로 운 경 로 를 통 해 이 문 제 를 해결 할 수 있다.
구현 코드 2,

public class Ini
    {
        //   INI         WritePrivateProfileString()
        [System.Runtime.InteropServices.DllImport("kernel32")]
        private static extern long WritePrivateProfileString(string section, string key, string val, string filePath);
        //   INI         GetPrivateProfileString()
        [System.Runtime.InteropServices.DllImport("kernel32")]
        private static extern int GetPrivateProfileString(string section, string key, string def, System.Text.StringBuilder retVal, int size, string filePath);
        private string sPath = null;

        public Ini(string path)
        {
            this.sPath = path;
        }

        public void Writue(string section, string key, string value)
        {
            // section=   ,key=  ,value=  ,path=  
            WritePrivateProfileString(section, key, value, sPath);

        }
        public string ReadValue(string section, string key)
        {
            //    ini       
            System.Text.StringBuilder temp = new System.Text.StringBuilder(255);
            // section=   ,key=  ,temp=  ,path=  
            GetPrivateProfileString(section, key, "", temp, 255, sPath);
            return temp.ToString();
        }
    }
INI 파일 의 형식 이 고정 되 어 있 기 때문에 해당 해석 프로그램 을 작성 하면 같은 읽 기와 쓰기 기능 을 수행 할 수 있 습 니 다.일반적인 문자열 처리 일 뿐 입 니 다.
만약 당신 이 직접 손 을 쓰 고 싶 지 않다 면,괜 찮 습 니 다.이미 만들어 진 절차 인 Cinchoo framework 가 있 습 니 다.당신 이 하고 싶 은 일 을 실현 할 수 있 습 니 다.
그리고 모든 것 이 다시 쉬 워 졌 다.

좋은 웹페이지 즐겨찾기