我将文件从Richtextbox保存到文本文件时遇到了问题。
我的richtextbox看起来像这样;
ABC ...
SDE ...
KLO ...
我保存后看起来像这样:
ABC ... SDE ... KLO ...
但我希望像行后的richtextbox一样。我做错了什么?
if (saveFileDialog2.ShowDialog() == DialogResult.OK)
{
StreamWriter sw = File.CreateText(saveFileDialog2.FileName);
sw.WriteLine(richTextBox1.Text);
sw.Flush();
sw.Close();
//File.WriteAllText(saveFileDialog2.FileName, str);
}
答案 0 :(得分:8)
您可能是因为您尝试仅使用以下代码将richTextBox1.Text
(全文)保存在一行中
StreamWriter sw = File.CreateText(saveFileDialog2.FileName);
sw.WriteLine(richTextBox1.Text);
sw.Flush();
sw.Close();
建议在sw.WriteLine()
中的特定行号上使用richTextBox1
,然后转到另一行。
示例强>
for (int i = 0; i < richTextBox1.Lines.Length; i++)
{
sw.WriteLine(richTextBox1.Lines[i]);
}
sw.Flush();
sw.Close();
RichTextBox
已经有一个内置函数来保存具有特定编码的文件。您可以将RichTextBox.SaveFile()
用于此目的。
示例强>
RichTextBox.SaveFile(string path, RichTextBoxStreamType);
代码中path
代表saveFileDialog2.FileName
的位置。对于RichTextBoxStreamType
,只要您不使用RTF(如颜色/字体/保护/缩进/等等),最好将其设置为RichTextBoxStreamType.PlainText
。
然后,您可以使用以下方法再次读取文件
RichTextBox.LoadFile(string path, RichTextBoxStreamType);
注意:如果文件不在RTF中,您尝试在RTF中读取它(RichTextBox.LoadFile(string path, RichTextBoxStreamType.RichText);
)
您可能会遇到格式错误。在这种情况下,您需要捕获异常并以Plain或Unicode编码方式读取文件。
示例强>
RichTextBox _RichTextBox = new RichTextBox();
try
{
_RichTextBox.LoadFile(@"D:\Resources\text.txt", RichTextBoxStreamType.RichText);
}
catch (Exception EX)
{
if (EX.Message.ToLower().Contains("format is not valid"))
{
_RichTextBox.LoadFile(@"D:\Resources\text.txt", RichTextBoxStreamType.PlainText);
}
}
谢谢, 我希望你觉得这很有帮助:)
答案 1 :(得分:3)
我知道这个问题已经很久了,但是对于那些可能在将来遇到这个问题的人来说,这是另一个代码
File.WriteAllLines(saveFileDialog1.FileName, richTextBox1.Lines);
答案 2 :(得分:0)
if (saveFileDialog2.ShowDialog() == DialogResult.OK)
{
StreamWriter sw = File.CreateText(saveFileDialog2.FileName);
foreach(String s in richTextBox1.Lines)
{
sw.WriteLine(s);
}
sw.Flush();
sw.Close();
}