#region 读取大文件的文本 使用streamReader using (StreamReader sr = new StreamReader(ofd.FileName, Encoding.Default)) { string txt = null; while ((txt = sr.ReadLine()) != null) { this.textBox2.Text += txt+"\r\n"; } } #endregion
一开始想解决每行读取的文本"\r\n"丢失的现象,所以我用了另一种方法
#region 麻烦的一种方法 //using (StreamReader sr = new StreamReader(ofd.FileName, Encoding.Default)) //{ // char[] buffer = new char[1024]; // int count = sr.Read(buffer, 0, buffer.Length); // string txt = new string(buffer); // this.textBox2.Text += txt; // while (count == buffer.Length) // { // //继续读 // count = sr.Read(buffer, 0, buffer.Length); // txt = new string((buffer.Take(count)).ToArray<char>()); // this.textBox2.Text += txt; // } //} #endregion
第二中方法用的是缓冲区读取,这样不会丢失换行符,但是每次读到最后都是会重复的读取(最后的文本无法填满缓冲区竟然会重复读取),造成显示文章的结尾时重复的,这让我非常恼火,于是就用了一种麻烦的方法,在缓冲区中截取每次读取的长度(我发现长度不会有多算,而buffer如果读不满,就会重复读)。
现在想想,也许第一种方式才是最简单,不要想的太复杂。只要在每次ReadLine的结果后加上"\r\n",就行了,方法的ReadLine读取是以读到换行符停止的。
时间: 2024-10-06 00:16:52