C#File.ReadAllLines仅识别第一行

时间:2018-09-21 11:28:09

标签: c#

我正在尝试使用File.ReadAllLines获得包含每一行的数组。我的文本文件每行包含一个单词,因此数组的每个索引都应包含一个单词,尽管当我运行代码时,它只会打印出第一行。

foreach (string emotion in emotions)
        {
            var lines = File.ReadAllLines("C:\\Users\\Griffin\\Documents\\C#\\thavma\\thavma\\bin\\Debug\\libraries\\" + emotion + ".lib");
            emotiondict.Add(emotion, lines);
            foreach (string f in lines)
            {
                Console.WriteLine(f);
                Console.ReadLine();
            }
        }

在这里供参考的是string []情感:

string[] emotions = new string[]
        { "anger","anticipation","disgust", "fear", "joy", "negative", "positive", "sadness", "surprise", "trust"};

以及我要读取的部分文件示例:

abandoned
abandonment
abhor
abhorrent
abolish
abomination
abuse
accursed
accusation
accused
accuser
...

当我运行代码时,所有显示的都是单词“ abandoned”,而且我不确定自己做错了什么。谢谢!

2 个答案:

答案 0 :(得分:11)

您有一个

Console.ReadLine();

在您的循环中。这将“停止”软件并等待用户输入,例如,您可以使用它来获取用户键入的内容。长话短说:如果您运行程序并反复按Enter,它将起作用。我建议将其更改为

foreach (string f in lines)
{
    Console.WriteLine(f);
}

Console.ReadLine();

这应该很好

答案 1 :(得分:0)

Console.ReadLine();代码将使用输入流。因此,该程序将等到用户输入内容。阅读下面的文章。

  

https://docs.microsoft.com/en-us/dotnet/api/system.console.readline?redirectedfrom=MSDN&view=netframework-4.7.2#System_Console_ReadLine

尝试此代码。并确保lines具有值。

        foreach (string emotion in emotions)
        {
            var lines = File.ReadAllLines("C:\\Users\\Griffin\\Documents\\C#\\thavma\\thavma\\bin\\Debug\\libraries\\" + emotion + ".lib");
            emotiondict.Add(emotion, lines);
            foreach (string f in lines)
            {
                Console.WriteLine(f);
            }
        }
        Console.ReadLine();