假设用户端一直要给我发二进制数据, 发多个, 比如data1
, data2
, data3
, data不是一个bit, 是个二进制串.
我现在想将这些数据存在1个文件里面, 未来需要读取,并且每次只读取一个data, 我要怎么做.
我现在的做法是:
bytes += '\n';
fs.write(fd, bytes)
给后面加一个标记位, 比如转行.
但是在读取的时候有没有什么比较好的方法
现在我想读取的方式是createReadStream
, 想每次读取一个byte然后做判断, 如果不是\n
继续读取.
- 这样做的话, 对写文件有没有什么要求, 比如必须是按照byte格式写到文件里面?
- 如果要读取的话, 怎样按照bite读取?
- 有没有其他的方法, 简单的能用就行.
打开文件之后, 肯定就不会随便关了, 本来想过一次读取多个bite判断, 但是读取多个的话, 如果\n
在多个bite中间的话, 继续下一行读取会丢失一些数据, 这个不做考虑.
可以这样:每个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 这周在写其他东西, 周六看下吧