C#visualstudio-I';我正在尝试读取一个文本文件,并将其显示在Richtextbox中并包含新行
我正在尝试读取一个文本文件,并将其显示到Richtextbox中并包含新行。 假设我希望它读作: 你好 你好 你好 但它的意思是: 你好 这是我目前掌握的代码:C#visualstudio-I';我正在尝试读取一个文本文件,并将其显示在Richtextbox中并包含新行,c#,visual-studio,C#,Visual Studio,我正在尝试读取一个文本文件,并将其显示到Richtextbox中并包含新行。 假设我希望它读作: 你好 你好 你好 但它的意思是: 你好 这是我目前掌握的代码: private void btnView_Click(object sender, EventArgs e) { OpenFileDialog op = new OpenFileDialog(); op.InitialDirectory = "C:\\"; op.Filter = "Txt files (*.t
private void btnView_Click(object sender, EventArgs e)
{
OpenFileDialog op = new OpenFileDialog();
op.InitialDirectory = "C:\\";
op.Filter = "Txt files (*.txt)|*.txt|All Files (*.*)|*.*";
op.FilterIndex = 2;
if (op.ShowDialog() == DialogResult.OK)
{
textBox1.Text = op.FileName;
string path = op.FileName;
StringBuilder sb = new StringBuilder();
using (StreamReader sr = new StreamReader(path))
{
while(sr.Peek() >= 0)
{
sb.Append(sr.ReadLine());
Console.WriteLine("\r\n");
}
}
richTextBox1.Text = sb.ToString();
}
}
StreamReader
行由Environment.NewLine
分隔。如果您阅读了,您会注意到ReadLine
不包含这些分隔符。如果要重新添加它们,请使用:
sb.Append(sr.ReadLine());
sb.Append(Environment.NewLine);
不要在WinForms应用程序中调用Console.WriteLine()。更改行:
Console.WriteLine("\r\n");
致:
另一种方法是使用
文件
类的staticReadAllText()
方法
您只需将路径传递给文本文件,它就会将所有文本(包括换行符)读入字符串并返回给您。然后,您可以将结果设置为richTextBox1.Text
属性,以获得更清晰、更易于阅读的代码:
if (op.ShowDialog() == DialogResult.OK)
{
textBox1.Text = op.FileName;
richTextBox1.Text = File.ReadAllText(op.FileName);
}
另外:在记事本中查看文本确实包含文本,因此它正确地写入了文本文件,只是没有读取文本。StringBuilder类有几个附加文本的选项。您正在使用的一个,
Append()
只是附加文本。但是还有另一个,叫做AppendLine()
,它也在末尾放了一个换行符。改用那一个,去掉Console.WriteLine
。或者只调用sb.AppendLine(sr.ReadLine())代码>
if (op.ShowDialog() == DialogResult.OK)
{
textBox1.Text = op.FileName;
richTextBox1.Text = File.ReadAllText(op.FileName);
}