簡體   English   中英

如何從 C# 中的 INI 文件中讀取值?

[英]How can I read a value from an INI file in C#?

我有一個 INI 文件,我想從組[DEVICE]中讀取DeviceName=PHJ01444-MC35行並將值分配給字符串。

[BEGIN-DO NOT CHANGE/MOVE THIS LINE]
[ExecList]
Exec4=PilotMobileBackup v1;Ver="1.0";NoUninst=1
Exec3=MC35 108 U 02;Ver="1.0.8";NoUninst=1
Exec2=FixMGa;Ver="1.0";Bck=1
Exec1=Clear Log MC35;Ver="1.0";Bck=1
[Kiosk]
Menu8=\Program Files\PilotMobile\Pilot Mobile Backup.exe
MenuCount=8
AdminPwd=D85F72A85AE65A71BF3178CC378B260E
MenuName8=Pilot Mobile Backup
Menu7=\Windows\SimManager.exe
MenuName7=Sim Manager
UserPwd=AF2163B24AF45971
PasswordPolicy=C34B3DE916AA052DCB2A63D7DCE83F17
DisableBeam=0
DisableBT=0
DisableSDCard=0
EnableAS=1
ActionCount=0
Url=file://\Application\MCPortal.htz
AutoLaunch=0
Menu6=\Windows\solitare.exe
MenuName6=Solitare
Menu5=\Windows\bubblebreaker.exe
MenuName5=Bubble Breaker
Menu4=\Windows\wrlsmgr.exe
MenuName4=Communications
Menu3=\Windows\Calendar.exe
MenuName3=Calendar
Menu2=\Windows\tmail.exe
MenuName2=Text Messaging
Menu1=\Program Files\PilotMobile\Pilot.Mobile.exe
MenuName1=Pilot Mobile
ShowStartMenu=1
CustomTaskBar=0
IdleTimeout=0
NoTaskbar=0
PPCKeys=1111111111111111
On=1
[Status]
MCLastConn=2006/10/01 00:50:56
[Connection]
DeploySvr1=********
[Locations]
Backup=Backup
Install=\Application
[Comm]
RetryDelay=60000
NoInBoundConnect=0
TLS=0
Broadcast=1
[Info]
LID=090128-117
PWDID=081212-10
TimeSyncID={249CEE72-5918-4D18-BEA8-11E8D8D972BF}
TimeSyncErrorInterval=5
TimeSyncInterval=120
AutoTimeSync=1
SecondarySNTPServer=ntp1.uk.uu.net
DefaultSNTPServer=ntp0.uk.uu.net
DepServerTimeSyncType=4
TimeSyncServerType=1
DFID=080717-8
Platform=PPC
Method=39
SiteName=*****
[Device]
SyncTimer=4
Ver=1
DeviceID={040171BD-3603-6106-A800-FFFFFFFFFFFF}
ShowTrayIcon=1
DeviceIDType=2
DeviceClass=AADE7ECE-DF8C-4AFC-89D2-DE7C73B579D0
DeviceName=PHJ01444-MC35
NameType=2

[END-DO NOT CHANGE/MOVE THIS LINE]

您可以為此使用 Windows API。 http://jachman.wordpress.com/2006/09/11/how-to-access-ini-files-in-c-net/

編輯:如評論中所述,該頁面在原始站點上不再可用,但仍可在Wayback Machine上訪問。

此外,MSDN 上還有一篇關於訪問所需功能的最新文章

因為將所有內容寫在一行中使我成為比您更好的人:

string s = File.ReadAllText("inifile.ini").Split('\r', '\n').First(st => st.StartsWith("DeviceName"));

如果您想要一個非常簡單但不是很干凈的答案:

using System.IO;

StreamReader reader = new StreamReader(filename);
while(reader.ReadLine() != "[DEVICE]") { continue; }

const string DeviceNameString = "DeviceName=";
while(true) {
    string line = reader.ReadLine();
    if(line.Length < DeviceNameString.Length) { continue; }
    else if(line.Substring(0, DeviceNameString.Length) != DeviceNameString) { continue; }
    return line.Substring(DeviceNameString.Length);
}

如果您只想從文件中讀取一個值,這是一個合理的選擇。 如果您認真使用此代碼,我可能會合並循環並添加一些文件檢查結尾。

string line;
string deviceName = string.Empty;
// Read the file and display it line by line.
using (System.IO.StreamReader file =
   new System.IO.StreamReader("c:\\file.ini"))
{
    while ((line = file.ReadLine()) != null)
    {
        if (line.ToLower().StartsWith("devicename"))
        {
            string[] fullName = line.Split('=');
            deviceName = fullName[1];
            break;
        }
    }
}

Console.WriteLine("Device Name =" + deviceName);
Console.ReadLine();

我相信還有其他方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM