为什么 Node.js' fs.readFile() 返回缓冲区而不是字符串?

2022-08-29 23:08:15

我正在尝试读取的内容(位于Javascript源代码的同一文件夹中)并使用以下代码显示它:test.txt

var fs = require("fs");

fs.readFile("test.txt", function (err, data) {
    if (err) throw err;
    console.log(data);
});

的内容创建于:test.txtnano

测试节点.js readFile()

我得到这个:

Nathan-Camposs-MacBook-Pro:node_test Nathan$ node main.js
<Buffer 54 65 73 74 69 6e 67 20 4e 6f 64 65 2e 6a 73 20 72 65 61 64 46 69 6c 65 28 29>
Nathan-Camposs-MacBook-Pro:node_test Nathan$ 

答案 1

文档中:

如果未指定编码,则返回原始缓冲区。

这也许可以解释.指定一个有效的编码,例如 ,作为文件名后面的第二个参数。如<Buffer ...>utf-8

fs.readFile("test.txt", "utf8", function(err, data) {...});

答案 2

尝试:

    fs.readFile("test.txt", "utf8", function(err, data) {...});

基本上,您需要指定编码。