C#没有传递foreach代码

时间:2013-02-16 19:57:11

标签: c#

下面的代码读取带有路径标题的文本文件,后跟文件名列表。 代码将每个文件(从第二行开始)添加到ListView。 由于某种原因,最后两行永远不会到达。 有什么想法吗?

    private void loadFromFile()
    {
        if ((faxInOn != null) && File.Exists(@"D:\Settings.ye"))
        {
            string[] s;
            StreamReader sr = new StreamReader(@"D:\Settings.ye", Encoding.Default);
            s = sr.ReadToEnd().Split(new string[] { "\r\n", "\n" }, StringSplitOptions.None);
            faxInOn.changePath(s[0]);
            foreach (string temp in s)
                foreach (ListViewItem lvi in listView1.Items)
                    if (lvi.Text == temp.Substring(1))
                        lvi.ImageIndex = int.Parse(temp.Substring(0, 1));
            sr.Close();
            sr.Dispose();
        }
    }

由于

2 个答案:

答案 0 :(得分:1)

使用foreach块的方式对于我认为你想要做的事情来说效率非常低。此外,使用“using(...)”块会更容易和更清洁,以便正确清理和处理您的资源。请参阅:http://msdn.microsoft.com/en-us/library/yh598w02.aspx

答案 1 :(得分:0)

尝试使用File.ReadLines

例如:

// Read all lines in file, skipping the first header line
foreach(var line in File.ReadLines(@"D:\Settings.ye").Skip(1))
{
   // add to list view
}