[英]Reading text file line by line using streamReader in c#
我正在尝试使用streamReader逐行读取文本文件。 我正在从文本框中获取文件路径,但它仅读取最后一行
这是我的代码,用于替换文本文件中的stop关键字。
try {
string line;
string path = textBox1.Text;
MessageBox.Show("Process is start");
//string text = System.IO.File.ReadAllText(richTextBox1.Text);
StreamReader file = new StreamReader(path);
MessageBox.Show(" process start reading file");
string[] stopWord = new string[] {
"is", "are", "am", "could", "will", "ing", "er", "est"
};
while ((line = file.ReadLine()) != null) {
// MessageBox.Show("in while");
FileStream fs1 = new FileStream(@
"D:\temp.txt", FileMode.OpenOrCreate, FileAccess.Write);
StreamWriter file1 = new StreamWriter(fs1);
file1.WriteLine();
foreach(string word in stopWord) {
//line = line.Replace(word,Environment.NewLine);
line = line.Replace(word, "");
}
file1.WriteLine(line);
file1.Close();
}
/*Converting text file into binary */
file.Close();
}
您也可以使用File
简化此代码:
string text = File.ReadAllText(path);
foreach (var word in stopWords) text = text.Replace(word, "");
File.WriteAllText(@"D:\temp.txt", text);
它的可定制性要差得多,它将读取整个文件进行处理,这可能会导致性能问题。
但是,如果您不打算处理大量数据,则可以使用此方法,因为它使用起来更短且更方便。
采用:
string lines="";
FileStream fs1 = new FileStream(@
"D:\temp.txt", FileMode.OpenOrCreate, FileAccess.Write);
StreamWriter file1 = new StreamWriter(fs1);
while ((line = file.ReadLine()) != null) {
// MessageBox.Show("in while");
file1.WriteLine();
foreach(string word in stopWord) {
//line = line.Replace(word,Environment.NewLine);
line = line.Replace(word, "");
}
lines +=line +Environment.Newline;
}
file1.WriteLine(lines);
file1.Close();
您在while循环中创建了新的file1,这就是为什么它仅显示最后一行的原因。 用上面的代码替换while循环。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.