nodejs关于文件读取
发布于 6 年前 作者 papandadj 2823 次浏览 来自 问答

假设用户端一直要给我发二进制数据, 发多个, 比如data1, data2, data3, data不是一个bit, 是个二进制串. 我现在想将这些数据存在1个文件里面, 未来需要读取,并且每次只读取一个data, 我要怎么做. 我现在的做法是:

bytes += '\n';
fs.write(fd, bytes)

给后面加一个标记位, 比如转行.

但是在读取的时候有没有什么比较好的方法 现在我想读取的方式是createReadStream, 想每次读取一个byte然后做判断, 如果不是\n继续读取.

  • 这样做的话, 对写文件有没有什么要求, 比如必须是按照byte格式写到文件里面?
  • 如果要读取的话, 怎样按照bite读取?
  • 有没有其他的方法, 简单的能用就行.

打开文件之后, 肯定就不会随便关了, 本来想过一次读取多个bite判断, 但是读取多个的话, 如果\n在多个bite中间的话, 继续下一行读取会丢失一些数据, 这个不做考虑.

4 回复

可以这样:每个data存一行,读取的时候按行读取,每一个data是一行。 按行读取文件可以使用readline模块,例如:

const readline = require('readline');

const rl = readline.createInterface({
  input: 'file.txt'
});

rl.on('line', (data) => {
  // 对每一个data处理
});

关于readline分行规则,截取官方文档:

The ‘line’ event is emitted whenever the input stream receives an end-of-line input (\n, \r, or \r\n). This usually occurs when the user presses the <Enter>, or <Return> keys.

The listener function is called with a string containing the single line of received input.

最后怎么解决的呢

@blackmatch 这样没办法读取固定行数的数据, 比如我要读取第20个bit位置的

@HongYangHT 这周在写其他东西, 周六看下吧

回到顶部