0

以下のコードは、パスのヘッダーとそれに続くファイル名のリストを含むテキスト ファイルを読み取ります。このコードは、各ファイル (2 行目以降) を ListView に追加します。何らかの理由で、最後の 2 行に到達することはありません。何か案は?

    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();
        }
    }

ありがとう

4

2 に答える 2

1

foreach ブロックの使用方法は、あなたがやろうとしていると思うことに対して、本当に非効率的です。また、「using(...)」ブロックを使用すると、リソースが適切にクリーンアップされ、正しく処理されるため、はるかに簡単でクリーンになります。参照してください: http://msdn.microsoft.com/en-us/library/yh598w02.aspx

于 2013-02-16T20:08:08.030 に答える
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
}
于 2013-02-16T20:23:50.603 に答える