从 RichTextBox 到文本文件,一行一行
Posted
技术标签:
【中文标题】从 RichTextBox 到文本文件,一行一行【英文标题】:From RichTextBox to text files, line after line 【发布时间】:2012-11-06 12:55:34 【问题描述】:我无法将文件从 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);
【问题讨论】:
【参考方案1】:您可能会得到这个,因为您试图仅使用以下代码将richTextBox1.Text
(整个文本)保存在一行中
StreamWriter sw = File.CreateText(saveFileDialog2.FileName);
sw.WriteLine(richTextBox1.Text);
sw.Flush();
sw.Close();
建议在richTextBox1
中的特定行号上使用sw.WriteLine()
,然后移至另一行。
示例
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
,最好设置为RichTextBoxStreamType.PlainText
,只要不使用颜色/字体/保护/缩进/等RTF...
然后,您可以使用以下方法再次读取文件
RichTextBox.LoadFile(string path, RichTextBoxStreamType);
注意:如果文件不在 RTF 中,而您尝试在 RTF 中读取它 (RichTextBox.LoadFile(string path, RichTextBoxStreamType.RichText);
)
您可能会遇到格式错误。在这种情况下,您需要捕获异常并以普通或 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);
谢谢, 希望对您有所帮助:)
【讨论】:
【参考方案2】:我知道这个问题已经很老了,但这里有一个替代代码供将来可能遇到这个问题的人使用
File.WriteAllLines(saveFileDialog1.FileName, richTextBox1.Lines);
【讨论】:
谢谢。它解决了我转换换行符的问题。 避免使用WriteAllLines
,如果你有更好的选择,因为它本质上是阻塞的。【参考方案3】:
if (saveFileDialog2.ShowDialog() == DialogResult.OK)
StreamWriter sw = File.CreateText(saveFileDialog2.FileName);
foreach(String s in richTextBox1.Lines)
sw.WriteLine(s);
sw.Flush();
sw.Close();
【讨论】:
它给了我ABC ... SDE ...
,然后是另一行KLO ...
,但它仍然不是我想要的。这里有什么问题?以上是关于从 RichTextBox 到文本文件,一行一行的主要内容,如果未能解决你的问题,请参考以下文章