System.IO.StreamReader xx = new System.IO.StreamReader("a.txt");
            int getB = xx.BaseStream.ReadByte();
            int add = 0;
            while (getB != -1)
            {
                if (getB == 13 || getB == 10)
                {
                    add++;
                    if (getB == 13 && xx.BaseStream.ReadByte() == 10)     //这行开始
                        xx.BaseStream.Position++;
                }
                getB = xx.BaseStream.ReadByte();               }帮忙解释下这3行...有点看不懂..谢谢。..

解决方案 »

  1.   

    哪三行?//打开一个Stream流以读取文件文件a.txt
    System.IO.StreamReader xx = new System.IO.StreamReader("a.txt"); 
    //读取一个字节
    int getB = xx.BaseStream.ReadByte();
    //初始化计数器add(实际换行符的个数)
    int add = 0;
    //循环结束的条件是读到-1
    while (getB != -1)
    {
        //判断是否回车或者换行除
        if (getB == 13 || getB == 10)
        {
            //是回车或者换行符的话,计数+1;
            add++;
            //这里加入一个判断:如果遇到一个回车,并且下一个字符是换行符,则读取位置再向前移一位。
             //这里应该是有一个BUG。xx.BaseStream.ReadByte()==10,这一个判断也会导致Position向是移一位。
             //这样分析:
             //如果当前位置值为13,且一下位置为10,则指向了10之后的第一个字节,即13之后的第二个。接下来的getB = xx.BaseStream.ReadByte();将读出这一字节。
             //如果当前位置为13,且下一位置不为10,则指向了13之后的第二个字节,那么13之后的第一个字节的内容将不会被判断。
            if (getB == 13 && xx.BaseStream.ReadByte() == 10)    //这行开始 
                xx.BaseStream.Position++;
        }
        getB = xx.BaseStream.ReadByte();
      

  2.   

    为什么写不乱码..读就会乱码...
    StreamReader xx = new StreamReader("a.txt", System.Text.Encoding.Default);
    这样读就没乱码了。..
    我想知道只替换第3行的数据.其它几行不变动.怎么实现?
      

  3.   

    读出来的byte[]要转换成string要进行相应的编码转换才行。
    只替换第三行的数据这种问题如果要完美解决很麻烦。一般是全部读取,在内存中替换第三行,然后再全部写回。
      

  4.   

    哦。.了解了。...结了。多谢phy帮助!
      

  5.   

    BaseStream.ReadByte  字节
    我想再转回去是打什么命令的?
      

  6.   

    转回去是何意?
    在读取流时,它有一个指针或者说有一个位置标志,表示下一个即将读取的位置(也可以理解为当前已经读取到的位置)。当你调用ReadByte()时从这里开始读一个字节。
    如果你的转回去是把这个指针往后移(已经读过的),那么在你的代码中已经出现了:
    BaseStream.Position++;  //这是往前移动
    BaseStream.Position--;  //这是往后移动(向已经读过的那个方向)
      

  7.   

    奇怪....本来StreamReader xx = new StreamReader("a.txt", System.Text.Encoding.Default); 
    没乱码的。..
    现在显示出来又有乱码了。..
      

  8.   

    晕...写入没设置System.Text.Encoding.Default.......我知道了。.....