node如何不用shell命令,不读取整个文件的情况下修改csv的第一行?
发布于 4 年前 作者 chenkai0520 6542 次浏览 来自 问答

node如何不用shell命令,不读取整个文件的情况下修改csv的第一行?

10 回复

如果你不增加或减少数据,只是修改的话可以用带offset参数的fs api操作

@zengming00 csv第一行我不知道有多少个字节啊!我是想修改下csv第一行的特殊字符

同意1楼。 至于怎样找“第一行”,简单做法就是试探,比如:从起始处读取1024字节,检查是否包含换行符,没找到就重新从起始读2048字节。。。找到的位置之前部分就是“第一行”;当然固定1024字节继续循环往后读取也是可以的,只是麻烦一些。

不读取整个文件,就只能 Stream 流式方式咯,然后去 http://npms.io/ 用 csv + stream 能搜索好多库了,如:

文件本质上就是个很长的字符数组。这个数组的前 n - m 个元素就是你说的第一行,如果你修改之前和修改之后数组的长度没有变化的话,就可以不用读取整个文件。否则,长度有变化的话。整个数组后面的元素全都要往前或者往后挪一挪。

@lellansin 发现修改第一行csv的内容挺复杂的,用sed命令解决了

@lellansin 我试试这种办法

@chenkai0520 Cool, 不过我猜 sed 本质上应该算是读取了整个文件的…

@lellansin 测试了一下sed不会读取整个文件,不过sed出乎意料的在修改大文件时有些慢,比重新生成一份文件快不了多少

@chenkai0520 数组中间插入一段,后面所有的元素都要重排

回到顶部