CNode

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

问答
Cchenkai0520发布于7 年前最后回复7 年前10 回复7792 浏览0 收藏

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

查看回复

回复 (10)

Z
zengming00#1·7 年前

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

C
chenkai0520#2·7 年前
引用 zengming00如果你不增加或减少数据,只是修改的话可以用带offset参数的fs api操作

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

M
myy#3·7 年前

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

A
atian25#4·7 年前

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

L
lellansin#5·7 年前

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

L
lellansin#8·7 年前
引用 chenkai0520@lellansin 发现修改第一行csv的内容挺复杂的,用sed命令解决了

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

C
chenkai0520#9·7 年前
引用 lellansin@chenkai0520 Cool, 不过我猜 sed 本质上应该算是读取了整个文件的..

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

参与回复
登录后即可参与回复。登录