码迷,mamicode.com
首页 > Windows程序 > 详细

C#循环读取文件流,按行读取

时间:2015-01-13 12:29:24      阅读:825      评论:0      收藏:0      [点我收藏+]

标签:

技术分享
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[1].Split(;);
                                    string realValue = noCommentValues[0].Trim();

                                    String[] sourceDiskCfg = realValue.Split(,);  //disk-description[,[tag-or-cab-file],[unused],[path],[flags][,tag-file]]  (tag-file : Windows XP and later versions of Windows)
                                    String diskpath = String.Empty;
                                    if (sourceDiskCfg.Length > 3)
                                        diskpath = sourceDiskCfg[3].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[0].Trim(), diskpath);
                                }
                                else
                                {
                      
                                    string[] noCommentValues = keyValues[1].Split(;);
                                    string realValue = noCommentValues[0].Trim();
                                    keyToValue.Add(keyValues[0].Trim(), realValue);
                                }
                            }
                        }
                        break;
                    }
                }
            }
            return keyToValue;
        }
View Code

 

C#循环读取文件流,按行读取

标签:

原文地址:http://www.cnblogs.com/tommy-huang/p/4220723.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!