如何创建一个文件(日志文件),并且倒序写入,控制大小?

boyyao 2016-07-23 09:10:32
创建一个TXT文件后。
怎么样让行写入文件的前面部分。。并且控制整个文件的大小(或者行数) 最好别每次都读取整个文件。因为日志写入很频繁。并且有很多个日志。。。
...全文
244 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
zzh_0820 2019-01-17
  • 打赏
  • 举报
回复
如果日志很多就按天或者按小时产生,那么查看日志时候方便些。
xuzuning 2016-07-24
  • 打赏
  • 举报
回复
若写入到文件的开始处,就会将原有的内容覆盖掉,显然不是你期望的 那么你就得将原有的内容向后移动,以腾出地方写新内容,但这又与 别每次都读取整个文件 相矛盾 所以日志文件是应该以追加方式写入内容 你可以记录下每次写入前的文件长度(简单的索引),读取时 Seek 到指定位置再开始读
CailyPersonal 2016-07-24
  • 打赏
  • 举报
回复
你这思路有问题,从头开始写,不覆盖则必然导致整个文件的重新保存,io开销最大
Poopaye 2016-07-24
  • 打赏
  • 举报
回复
据我所知,常见的日志系统,都没有倒着写 而且驱动也不允许你在文件开头插入数据
我叫小菜菜 2016-07-24
  • 打赏
  • 举报
回复
追加文本模式操作文件。
StreamWriter sw = File.AppendText(Server.MapPath(".")+"\\myText.txt");     
sw.WriteLine("Android");     
sw.WriteLine("Java");     
sw.WriteLine(".NET");     
sw.Flush();     
sw.Close();
秋的红果实 2016-07-23
  • 打赏
  • 举报
回复
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那里加条件即可

111,098

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧