【发布时间】: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