首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> ASP.NET 基礎 >> ASP.NET 基礎

ASP.NET 操作 INI 設定檔完整範例教學

     編輯:ASP.NET 基礎

前言

INI 檔案作為輕量級設定檔,在 Windows 應用程式中廣泛使用。雖然 ASP.NET 主要採用 Web.config,但在某些情境下(如與傳統桌面程式共用設定、簡單部署需求)仍需讀寫 INI。本文示範如何在 ASP.NET 中透過 P/Invoke 呼叫 Windows API 實作 INI 檔案讀寫封裝類別,並提供完整的呼叫範例。

核心封裝類別:INIFile

利用 kernel32.dll 中的 WritePrivateProfileString 與 GetPrivateProfileString 兩個 API 函數,建立一個可重複使用的 INIFile 類別:

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

namespace CreateWebDir
{
    public class INIFile
    {
        public string Path { get; private set; }

        public INIFile(string iniPath)
        {
            Path = iniPath;
        }

        [DllImport("kernel32", CharSet = CharSet.Auto)]
        private static extern long WritePrivateProfileString(string section, string key, string val, string filePath);

        [DllImport("kernel32", CharSet = CharSet.Auto)]
        private static extern int GetPrivateProfileString(string section, string key, string def, StringBuilder retVal, int size, string filePath);

        /// 寫入指定區段與鍵值
        public void IniWriteValue(string section, string key, string value)
        {
            WritePrivateProfileString(section, key, value, this.Path);
        }

        /// 讀取指定區段與鍵值,若不存在回傳空字串
        public string IniReadValue(string section, string key)
        {
            StringBuilder temp = new StringBuilder(255);
            GetPrivateProfileString(section, key, "", temp, 255, this.Path);
            return temp.ToString();
        }
    }
}

實際應用範例

1. 建立 INI 檔案並寫入資料

在 Page_Load 中檢查檔案是否存在,不存在則建立,接著批次寫入測試資料:

using System;
using System.IO;
using CreateWebDir;

public partial class user_Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        string iniFile = @"F:\test\test.ini";

        // 確保目錄與檔案存在
        if (!File.Exists(iniFile))
        {
            using (FileStream fs = File.Create(iniFile)) { }
        }

        INIFile myINI = new INIFile(iniFile);

        for (int i = 0; i < 10; i++)
        {
            string val = Convert.ToString(i + i * i * i);
            myINI.IniWriteValue("WebDir", "arg" + i, val);
        }
    }
}

2. 讀取 INI 檔案並輸出結果

另一個頁面專門負責讀取並顯示特定鍵值:

using System;
using CreateWebDir;

public partial class user_Read : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        INIFile ini = new INIFile(@"F:\test\test.ini");
        Response.Write(ini.IniReadValue("WebDir", "arg5"));
    }
}

注意事項與最佳實踐

  • 路徑權限:ASP.NET 執行身分(通常是 IIS_IUSRS 或應用程式集區身分)必須擁有目標資料夾的寫入權限。
  • 編碼問題:API 預設使用系統預設編碼(ANSI),若 INI 含中文建議統一使用 UTF-8 並自行處理編碼轉換。
  • 效能考量:頻繁讀寫時,可考慮將整個區段一次讀入記憶體,減少 API 呼叫次數。
  • 替代方案:新專案建議優先使用 ConfigurationManager 搭配 appSettings 或自訂 ConfigurationSection,僅在相容舊系統時使用 INI。

總結

透過 P/Invoke 封裝 Windows API,即可在 ASP.NET 中輕鬆操作 INI 檔案。本文提供的 INIFile 類別結構清晰、易於擴充,可直接套用於實際專案中。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved