【问题标题】:Searching for a word in a text file is failing in C# [duplicate]在 C# 中搜索文本文件中的单词失败 [重复]
【发布时间】:2017-04-05 17:00:51
【问题描述】:

请看下面的代码。

DirectoryInfo directory = new DirectoryInfo(@"XXXXXX   \IN");
FileInfo[] files = directory.GetFiles("*.*");

     foreach (var f in files)   //FETCHING FILES FROM THE BULK FOLDER (IN)
        {
            string path_f = f.FullName;
            StreamReader myfile = new StreamReader(path_f);                    
            StreamReader basis = new StreamReader(@"C:XXXXXXXX\SCH.TXT");

               while (basis.EndOfStream == false)
                        {
                            string canon = basis.ReadLine();  //CANON STORES EACH WORD FROM SCH.TXT
                            canon = canon.Trim();

                            while (myfile.EndOfStream == false)
                            {
                                string line = myfile.ReadLine();
                                if (line.Contains(canon))
                                DISCH_COUNT++;


                            } // END OF WHILE

                         } // END OF WHILE

                    basis.Close();               

            } 

        myfile.close();

SCH.TXT 包含一些单词。我需要搜索这些单词在文件中出现了多少次。我从 SCH.txt 中提取每个单词并在文件中搜索。我的问题是第一个单词,搜索完成了 finley。从第二个单词开始,条件myfile.EndOfStream == false 正在失败。你能帮我解决这个问题吗??

【问题讨论】:

  • 您是否尝试调试过您的代码?另请参阅minimal reproducible example
  • 根据“基础”中的单词数量,您可能最好将所有这些单词读入一个列表,然后尝试将该列表中的每个单词与读取的每一行匹配个别文件。目前,您阅读了正在比较的每个文件的“基础”文件 - 除非“基础”可以改变这是不必要的。然后,您对“基础”文件的每个单词读取每个输入文件一次 - 再次不必要。
  • Yes....条件myfile.EndOfStream == false 在第一个单词搜索完成后被跳过。如何重新从文件的开头进行搜索..??
  • @METALHEAD 你看过我发布的副本了吗?您必须将您的 myfile 流返回到开头。

标签: c# .net streamreader


【解决方案1】:

试试这个逐行阅读文本内容

int counter = 0;
string line;

// Read the file and display it line by line.
System.IO.StreamReader file = 
   new System.IO.StreamReader("c:\\test.txt");
while((line = file.ReadLine()) != null)
{
   Console.WriteLine (line);
   counter++;
}

file.Close();

我没有测试代码,但它会给你一个基本的想法,你如何实现搜索功能。祝你好运

【讨论】:

  • 嗨夏尔马。感谢您的宝贵建议。我从可能的重复中得到了答案。 TQ
  • 很好,很高兴知道
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多