C#循环读取文件流,按行读取
public Dictionary<string,string> GetSourceDisksElements(String section){
section = "[" + section;
Dictionary<string, string> keyToValue = new Dictionary<string, string>();
//打开文件流,开始读取文件
using (StreamReader sin = new StreamReader(new FileStream(path, FileMode.Open, FileAccess.Read, FileShare.Read)))
{
for (String str = sin.ReadLine(); str != null; str = sin.ReadLine())
{
if (str.Trim().StartsWith(section, StringComparison.OrdinalIgnoreCase)) //some section has comment.
{
for (str = sin.ReadLine(); str != null && !str.Trim().StartsWith("["); str = sin.ReadLine()) //loop for get string, until to next section or end of file.
{
if (!String.IsNullOrEmpty(str.Trim()) && !str.Trim().StartsWith(";"))//drop the comment line and empty line. //去掉name-value对的限制,因为存在无=的情况。20100309.str.Contains('=') &&only get the name-value pair line.
{
String[] keyValues = str.Split('=');
if (section.Equals("[SourceDisksNames"))
{
string[] noCommentValues = keyValues.Split(';');
string realValue = noCommentValues.Trim();
String[] sourceDiskCfg = realValue.Split(',');//disk-description[,,,,[,tag-file]](tag-file : Windows XP and later versions of Windows)
String diskpath = String.Empty;
if (sourceDiskCfg.Length > 3)
diskpath = sourceDiskCfg.Trim();
if (diskpath.StartsWith("\""))
diskpath = RemoveQuotes(diskpath);
if (!String.IsNullOrEmpty(diskpath) && diskpath.StartsWith("."))
diskpath = diskpath.Substring(diskpath.IndexOf('\\'));
//20150112
if (!String.IsNullOrEmpty(diskpath) && !diskpath.StartsWith("\\"))
diskpath = "\\" + diskpath;
keyToValue.Add(keyValues.Trim(), diskpath);
}
else
{
string[] noCommentValues = keyValues.Split(';');
string realValue = noCommentValues.Trim();
keyToValue.Add(keyValues.Trim(), realValue);
}
}
}
break;
}
}
}
return keyToValue;
}
文档来源:51CTO技术博客https://blog.51cto.com/u_15311900/3177376
页:
[1]