Node.js 为什么fs.readFile数据的console.log不记录字符串?
我有以下代码:Node.js 为什么fs.readFile数据的console.log不记录字符串?,node.js,Node.js,我有以下代码: http = require("http"); fs = require("fs"); fs.readFile("file.txt", function(err, data) { console.log(data); }); txt文件的内容是“helloworld”,所以我希望“helloworld”会被记录到控制台上。相反,我得到了“缓冲区”和一些十六进制数。这是为什么?如果您没有将编码类型作为fs.readFile()选项的一部分传递,那么它将为您提供一个缓冲区对象
http = require("http");
fs = require("fs");
fs.readFile("file.txt", function(err, data) {
console.log(data);
});
txt文件的内容是“helloworld”,所以我希望“helloworld”会被记录到控制台上。相反,我得到了“缓冲区”和一些十六进制数。这是为什么?如果您没有将编码类型作为
fs.readFile()
选项的一部分传递,那么它将为您提供一个缓冲区对象,而不是作为数据的字符串。如果指定的编码适用于字符串,如'utf8',
,则它将为您提供一个字符串
const fs = require("fs");
fs.readFile("file.txt", 'utf8', function(err, data) {
if (err) {
console.log(err);
} else {
console.log(typeof data); // "string"
console.log(data);
}
});
因此,基本上编码是一个可选参数,如果不传递,那么您将获得一个缓冲区对象作为数据,您可以从中提取字符串,但是最好传递您希望从文件中的数据中传递的任何编码
注意:这在中有非常清楚的解释
另外,请正确声明变量fs
和http
。可能重复的