从二进制文件中的特定行读取数据

Read Data from Specific Line in binary file

我意识到这与其他已提出的问题类似,但在查阅了几天的堆栈溢出和 node.js 文档后,我决定是时候寻求帮助了。

基本上我需要做的是从二进制文件中读取数据并提取信息,然后将其转换为纯文本。

我一直在尝试使用缓冲区,但没有看到任何进展。

如果有人能让我知道您可以阅读整个文件并解码为纯文本,我相信我可以从那里开始。

const fs = require('fs');
let buf = fs.readFileSync(__dirname + '/sd_bl.bin');
let buffer = new Buffer.alloc(Buffer.byteLength(buf));
buffer.write(buf.toString('base64'));
console.log(buffer);

这是我目前拥有的,输出是:

<缓冲区 41 41 45 43 41 77 51 46 42 67 63 41 41 51 49 44 42 41 55 47 42 77 41 42 41 67 4d 45 42 51 59 48 41 41 45 43 41 77 62 46 4 41 41 51 49 44 42 41 ... 7950 更多字节>

所以它似乎正在正确地分配和写入缓冲区,但我不知道接下来的步骤应该是从中获取纯文本。

我在这里相对较新,但这是一个镜头!我相信您的 console.log 声明可能会误导您。 相反,控制台日志记录 buffer.toString() 应该足以让您获得文件的人类可读内容。

这是一个例子:

var buffer = fs.readFileSync('yourfile.txt')
console.log(buffer.toString())

目前,您的代码在读取文件后创建一个新的缓冲区对象 (buffer),将旧缓冲区的内容写入其中,然后打印出新的缓冲区对象本身而不是其字符串表示形式。

编辑:终端中的屏幕截图

有关实际逐行阅读文件的更多信息,我会查看其他 post:Read a file one line at a time in node.js?