即每一次是插入在第一行 
什么意思啊?是不是for(int i=100;i>0;i--)啊?

解决方案 »

  1.   

    我上面的程序只是个示例,实际log文件可能有上万行,每一个月清理一次,所以全读出来是很郁闷的。其实我就想知道直接用文件流能不能不在最后一行插入,而在第一行
      

  2.   

    即每一次是插入在第一行 
    什么意思啊?是不是for(int i=100;i>0;i--)啊?
    -----这是示意啊,一个很大的log文件,我只想在最上面是最新的数据
      

  3.   

    sorry 我错了下面的代码应该可以
    FileStream fs = new FileStream("data.bin", FileMode.Create);
    BinaryWriter w = new BinaryWriter(fs);
    String strOutput = "";
    w.BaseStream.Seek(0, SeekOrigin.Begin);        // 将文件指针设置到文件开始
    w.Write( "111" );
    fs.Close();
      

  4.   

    我怕麻烦没有用二进制写,实在不行只有那样来试验了;但用文本流这种方法不行,我早实验过了:
    string strURL=Server.MapPath("../xxlr/calulation.log");
    System.IO.StreamWriter fw=new System.IO.StreamWriter(strURL);
    for(int i=0;i<10;i++)
    {
    fw.BaseStream.Seek(0,System.IO.SeekOrigin.Begin);
    fw.WriteLine(i);
    }
    fw.Close();
    结果一样让我失望
    ----不过还是谢谢你,呵呵
      

  5.   

    FileStream fs = new FileStream(strURL, FileMode.OpenOrCreate);
    BinaryWriter w = new BinaryWriter(fs);
    for(int i=0;i<100;i++)
    {
    w.BaseStream.Seek(0, SeekOrigin.Begin);        // 将文件指针设置到文件开始
    w.Write(i.ToString());
    }
    fs.Close();-----结果,似乎指针是移对了,但是却直接覆盖了后面的字段,所以,最后就输出一个-99
    算了,我想别的办法,是在不行,直接用指针操作了
      

  6.   

    确实有你说的问题,我也不知道如何解决。最简单的就是我最早说的,先读出99行,保存到一个Stringbuilder 中,然后加入一个新的,然后把这些写到文件中。
      

  7.   

    确实有你说的问题,我也不知道如何解决。最简单的就是我最早说的,先读出99行,保存到一个Stringbuilder 中,然后加入一个新的,然后把这些写到文件中。------呵呵,你这个方法我也想过了,先把文件读到缓冲区,再加入一条,再写入。但我的log文件很大,我把它写在前面也是想提高速度。如果那样写的话,和我查log的时候遍历整个文档效果是一样的了。
    ------因为通常情况下,程序只检查最近几天的数据,log文件一个月大概有1000行左右,倒不是很多很多,但写不出合理的程序,浑身都不舒服
    ------多谢!