Nodejs 如何文件追加从最开始开始追加
发布于 7 年前 作者 Suwings 8246 次预览 最后一次回复是 7 年前 来自 问答
有个需求,需要生成一个日志文件,但是这个日志文件是倒序的。 也就是先写入的日志内容在后面,最后写入的日志内容在文本文件的最前面。
类似于这样:(或者说更类似于栈。只是这是一种文件的栈)
我想实现一个 writeline 方法,但是这个写入一行文本的是追加到最前面的,而不是默认在最后。 文件内容比较大,而且这种操作也较为频繁,最好不要用那种先全部读入内存然后添加到头又全部写回去的那种…
还请指教…
9 回复
当然也可以反向思维,不一定非得要写入的时候是追加到最前面的。 也可以读取的时候是从最后一行开始读的,但是似乎 readline 只能从最开始的第一行开始读。。。 不能从最后一行向上读…
不知道怎么回答你,记得看文档要仔细 https://nodejs.org/dist/latest-v10.x/docs/api/fs.html#fs_fs_write_fd_buffer_offset_length_position_callback
sed 是 Unix 系统上自带的程式,从截图看起来楼主是 Windows 系统,这样的操作可能不太方便,可以参考看看 shelljs。
二楼正解,读读文档,position参数为0就行了。
来自✨ Node.js开源项目精选✨
@vendar 这方法是重写该区域的数据吧,不是追加吧
@MUHM 重写还是追加取决于fd打开的模式,不过Linux上此参数在append模式无法生效。
来自✨ Node.js开源项目精选✨
不要想了,没听说那个文件系统支持 “在文件头部或中间插入数据”这种操作,只能在指定位置覆盖式写入数据,或者尾部追加数据。
反向思维的方法比较靠谱,倒序读文件自己实现一个不会很难。
其实还有个省事的办法是用数据库存,读取的时候直接倒序查询就可以了