快速读取大文本文件.richTextBox和StringBuilder用法
主要是因为有些txt小说之类的,如果用 richTextBox1.LoadFile 是快,但是问题是不会换行,比如起点里面下载的txt文本的小说就有这个毛病,研究后发现要用流读取,每次1行.刚刚做的时候效率很差,主要是把richTextBox1放到循环里面去增加行了.......汗.现在把关键代码添上
下面这个才是王道啊.解决换行问题,高速读取
//直接打开,代码简单,就是有些txt打开后不会换行
private void rtf方式ToolStripMenuItem_Click(object sender, EventArgs e)
{
OpenFileDialog op = new OpenFileDialog();
op.Filter = "文本文件(*.txt)|*.txt";
op.AddExtension = true;
op.DefaultExt = "txt";
op.CheckFileExists = true;
op.CheckPathExists = true;
if (op.ShowDialog() == DialogResult.OK)
{
fileName = op.FileName;
try
{
richTextBox1.LoadFile(fileName, RichTextBoxStreamType.PlainText);
}
catch (Exception ex)
{ throw ex; }
}
}
private void rtf方式ToolStripMenuItem_Click(object sender, EventArgs e)
{
OpenFileDialog op = new OpenFileDialog();
op.Filter = "文本文件(*.txt)|*.txt";
op.AddExtension = true;
op.DefaultExt = "txt";
op.CheckFileExists = true;
op.CheckPathExists = true;
if (op.ShowDialog() == DialogResult.OK)
{
fileName = op.FileName;
try
{
richTextBox1.LoadFile(fileName, RichTextBoxStreamType.PlainText);
}
catch (Exception ex)
{ throw ex; }
}
}
下面这个才是王道啊.解决换行问题,高速读取
private void rich()
{
try
{
FileStream fs = new FileStream(fileName, FileMode.Open, FileAccess.Read);
if (fs.CanRead)
{
//读取时加入编码信息,否则读取汉字会乱码
StreamReader sr = new StreamReader(fs, Encoding.Default);
string strline = sr.ReadLine();
StringBuilder sb = new StringBuilder();
while (strline != null)
{
strline = sr.ReadLine();
sb = sb.Append(strline + "\n");
}
sr.Close();
richTextBox1.Text = sb.ToString();
}
}
catch (Exception ex)
{ throw ex; }
}
{
try
{
FileStream fs = new FileStream(fileName, FileMode.Open, FileAccess.Read);
if (fs.CanRead)
{
//读取时加入编码信息,否则读取汉字会乱码
StreamReader sr = new StreamReader(fs, Encoding.Default);
string strline = sr.ReadLine();
StringBuilder sb = new StringBuilder();
while (strline != null)
{
strline = sr.ReadLine();
sb = sb.Append(strline + "\n");
}
sr.Close();
richTextBox1.Text = sb.ToString();
}
}
catch (Exception ex)
{ throw ex; }
}