有个需求,需要生成一个日志文件,但是这个日志文件是倒序的。 也就是先写入的日志内容在后面,最后写入的日志内容在文本文件的最前面。
类似于这样:(或者说更类似于栈。只是这是一种文件的栈)
我想实现一个 writeline 方法,但是这个写入一行文本的是追加到最前面的,而不是默认在最后。 文件内容比较大,而且这种操作也较为频繁,最好不要用那种先全部读入内存然后添加到头又全部写回去的那种…
还请指教…
当然也可以反向思维,不一定非得要写入的时候是追加到最前面的。 也可以读取的时候是从最后一行开始读的,但是似乎 readline 只能从最开始的第一行开始读。。。 不能从最后一行向上读…
sed 是 Unix 系统上自带的程式,从截图看起来楼主是 Windows 系统,这样的操作可能不太方便,可以参考看看 shelljs。
➜ cat sample.txt
original_1
original_2
original_3
➜ sed -i '1s/^/prepend_1\n/' ./sample.txt
➜ cat sample.txt
prepend_1
original_1
original_2
original_3
二楼正解,读读文档,position参数为0就行了。
来自✨ Node.js开源项目精选✨
@vendar 这方法是重写该区域的数据吧,不是追加吧
@MUHM 重写还是追加取决于fd打开的模式,不过Linux上此参数在append模式无法生效。
来自✨ Node.js开源项目精选✨
不要想了,没听说那个文件系统支持 “在文件头部或中间插入数据”这种操作,只能在指定位置覆盖式写入数据,或者尾部追加数据。
反向思维的方法比较靠谱,倒序读文件自己实现一个不会很难。
其实还有个省事的办法是用数据库存,读取的时候直接倒序查询就可以了