У меня есть некоторая информация в текстовом файле, которую я хочу прочитать и отобразить в списке в WPF. Вот что у меня есть в текстовом файле:

First Name: ABC
Last Name: def
Mobile: 5453553535
email: abc@gmail.com

И это код:

private void listView1_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
    string text;
    FileStream aFile = new FileStream("D:\\PhoneBook.txt", FileMode.Open);
    StreamReader sr = new StreamReader(aFile);
    text = sr.ReadLine();
    // Read data in line by line.
    while (text != null)
    {
        foreach (string info in text.Split(',')) 
        {
            listView1.Items.Add(info);
        }       
    }
    sr.Close();
}

Каждый раз, когда я запускаю программу, список пуст и зависает. Любая помощь будет оценена. Спасибо

0
Sneh 22 Окт 2018 в 20:38

2 ответа

Лучший ответ

Вам нужно добавить в цикл строку чтения:

private void listView1_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
    string text;
    FileStream aFile = new FileStream("D:\\PhoneBook.txt", FileMode.Open);
    StreamReader sr = new StreamReader(aFile);
    text = sr.ReadLine();
    // Read data in line by line.
    while (text != null)
    {
        foreach (string info in text.Split(',')) 
        {
            listView1.Items.Add(info);
        }        
        // read the next line here
        text = sr.ReadLine();      
    }

    sr.Close();
}

Но лучший подход был бы:

while(!sr.EndOfStream)
{
    text = sr.ReadLine();
    // now write ...
}
0
roozbeh S 22 Окт 2018 в 17:44

Вы не обновляете «текст» внутри цикла - вам просто нужно добавить text = sr.ReadLine (); там, чтобы избежать бесконечного цикла while!

Тем не менее, вы можете просто использовать File.ReadAllLines () - https://docs.microsoft.com/en-us/dotnet/api/system.io.file.readalllines?view=netframework-4.7.2

0
Sam 22 Окт 2018 в 17:43
52934844