Я пишу программу на C# для чтения из файла и выводя в файл csv все уникальные слова и количество вхождений в файле для каждого слова. Моя проблема в том, что когда я пытаюсь запустить свою программу, я никогда не выхожу из своего цикла while, который идет по строкам.Проблема с бесконечным циклом при чтении из файла
public override List<WordEntry> GetWordCount()
{
List<WordEntry> words = new List<WordEntry>();
WordEntry wordEntry = new WordEntry();
//string[] tokens = null;
string line, temp, getword;
int count = 0, index = 0;
long number;
while ((line = input.ReadLine()) != null)
{
if (line == null)
Debug.Write("shouldnt happen");
char[] delimit = { ' ', ',' };
string[] tokens = line.Split(delimit);
if (words.Count == 0)
{
wordEntry.Word = tokens[0];
wordEntry.WordCount = 1;
words.Add(wordEntry);
}//end if
for (int i = 0; i < tokens.Length; i++)
{
for (int j = 0; j < words.Count; j++)
{
if (tokens[i] == words[j].Word)
{
number = words[j].WordCount;
number++;
getword = words[j].Word;
wordEntry.WordCount = number;
wordEntry.Word = getword;
words.RemoveAt(j);
words.Insert(j, wordEntry);
}//end if
else
{
wordEntry.Word = tokens[i];
wordEntry.WordCount = 1;
words.Add(wordEntry);
}//end else
}//end for
}//end for
}//end while
return words;
}
Он застревает в цикле while, как будто он никогда не доходит до конца файла. Файл составляет 2,6 МБ, чтобы он мог довести его до конца.
Как долго вы можете ждать? Thats ужасно большой файл ... – BradleyDotNET
@BradleyDonNET Да, я принял это во внимание. Я ждал много времени. Я могу попробовать еще раз и подождать 10 минут, чтобы узнать, не в конце концов ли это догоняет. Я просто не чувствую, что это должно занять так много времени. – saboehnke
Вместо вашего 'List' почему бы не использовать 'Dictionary ', чтобы быстро проверить, не видели ли вы это слово, а не перебираете все слова, которые вы уже видели. –
juharr