Nodejs 如何文件追加从最开始开始追加
发布于 6 年前 作者 Suwings 6717 次浏览 来自 问答

有个需求,需要生成一个日志文件,但是这个日志文件是倒序的。 也就是先写入的日志内容在后面,最后写入的日志内容在文本文件的最前面。

类似于这样:(或者说更类似于栈。只是这是一种文件的栈) TIM截图20180615095649.jpg

我想实现一个 writeline 方法,但是这个写入一行文本的是追加到最前面的,而不是默认在最后。 文件内容比较大,而且这种操作也较为频繁,最好不要用那种先全部读入内存然后添加到头又全部写回去的那种…

还请指教…

9 回复

当然也可以反向思维,不一定非得要写入的时候是追加到最前面的。 也可以读取的时候是从最后一行开始读的,但是似乎 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开源项目精选

不要想了,没听说那个文件系统支持 “在文件头部或中间插入数据”这种操作,只能在指定位置覆盖式写入数据,或者尾部追加数据。

反向思维的方法比较靠谱,倒序读文件自己实现一个不会很难。

其实还有个省事的办法是用数据库存,读取的时候直接倒序查询就可以了

回到顶部