怎么样创建一个文件(日志文件),并且倒序写入,控制大小

.Net技术 码拜 5年前 (2016-05-14) 660次浏览
创建一个TXT文件后。
怎样让行写入文件的前面部分。并且控制整个文件的大小(或行数) 最好别每次都读取整个文件。原因是日志写入很频繁。并且有很多个日志。
解决方案

4

lz为什么不用数据库呢?方便操作,还可以避免多个文件同时操作同一个文件的麻烦
你的第一个问题,要想把最新写入的东西放到前面,就必须移动原有内容,效率可想而知了,不建议这么做
第二个问题,可以按行读取,如下面

System.IO.FileStream fs = new System.IO.FileStream("F:\123.txt",System.IO.FileMode.Open, System.IO.FileAccess.Read);
System.IO.StreamReader sm = new System.IO.StreamReader(fs);
while(sm.Peek()>=0)
{
    Response.Write(sm.ReadLine() + "<br />");
}
sm.Dispose();
sm.Close();

你想要读取指定行数,可以在while那里加条件即可

4

若写入到文件的开始处,就会将原有的内容覆盖掉,显然不是你期望的
那么你就得将原有的内容向后移动,以腾出地方写新内容,但这又与 别每次都读取整个文件 相矛盾
所以日志文件是应该以追加方式写入内容
你可以记录下每次写入前的文件长度(简单的索引),读取时 Seek 到指定位置再开始读

4

追加文本模式操作文件。

StreamWriter sw = File.AppendText(Server.MapPath(".")+"\myText.txt");     
sw.WriteLine("Android");     
sw.WriteLine("Java");     
sw.WriteLine(".NET");     
sw.Flush();     
sw.Close();

4

据本人所知,常见的日志系统,都没有倒着写
而且驱动也不允许你在文件开头插入数据

4

你这思路有问题,从头开始写,不覆盖则必然导致整个文件的重新保存,io开销最大

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明怎么样创建一个文件(日志文件),并且倒序写入,控制大小
喜欢 (0)
[1034331897@qq.com]
分享 (0)