首页 > 解决方案 > 从二进制文件中的特定行读取数据

问题描述

我意识到这与其他被问到的问题类似,但是在倾注了几天的堆栈溢出和 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 7746 41 46 4125 42 41 ... 7950 更多字节>

所以它似乎正确地分配和写入缓冲区,但我不知道下一步应该是什么,只要从中获取纯文本。

标签: node.jsbinarybuffer

解决方案


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

这是一个例子:

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

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

编辑:终端中的截图 在此处输入图像描述

有关实际逐行读取文件的更多信息,我会检查另一个所以发布:在 node.js 中一次一行读取文件?


推荐阅读