【问题标题】:Read Data from Specific Line in binary file从二进制文件中的特定行读取数据
【发布时间】:2021-08-16 18:27:25
【问题描述】:

我意识到这与其他已提出的问题类似,但在倾注了几天的堆栈溢出和 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);

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

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

【问题讨论】:

  • 您能否提供有关您当前尝试的任何代码?
  • @Blake 我用当前代码编辑过

标签: node.js binary buffer


【解决方案1】:

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

这是一个例子:

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

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

编辑:终端中的截图

有关实际逐行读取文件的更多信息,我会检查另一个,所以发布:Read a file one line at a time in node.js?

【讨论】:

  • 感谢您的帮助,但是当我运行您的示例时,它看起来输出相同的内容
  • 这很奇怪。我只是在终端中运行它们,它将它输出为我可读的字符串。我会在回复中放一张截图,看看我们是否在同一页面上。
  • 看起来和我的基本一样。您的“test.txt”中有什么内容?
  • 哇。我有一句话:“这是一个测试。”在我的 test.txt 文件中。
  • 原来我正在读取的文件已损坏,所以当我拥有正确的数据时,您的解决方案效果很好。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-12-04
  • 1970-01-01
  • 2015-06-27
  • 2015-04-23
  • 2018-01-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多