码迷,mamicode.com
首页 > Web开发 > 详细

.NET IO 复习中的误区

时间:2016-01-04 22:27:46      阅读:199      评论:0      收藏:0      [点我收藏+]

标签:

    #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读取是以读到换行符停止的。

.NET IO 复习中的误区

标签:

原文地址:http://www.cnblogs.com/plantprotecter/p/5100411.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!