我试图读取test.txt(在Javascript源代码的同一文件夹上)的内容,并使用以下代码显示它:

var fs = require("fs");

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

在nano上创建test.txt的内容:

测试Node.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$ 

当前回答

它返回一个Buffer对象。

如果你想要一个字符串,你可以用data.toString()转换它:

var fs = require("fs");

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

其他回答

从文档中可以看出:

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

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

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

异步:

fs.readFile('test.txt', 'utf8', callback);

同步:

var content = fs.readFileSync('test.txt', 'utf8');

它返回一个Buffer对象。

如果你想要一个字符串,你可以用data.toString()转换它:

var fs = require("fs");

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

它只是一个返回内容,编码的函数你需要添加编码参数如"UTF-8"

数据变量包含一个Buffer对象。使用以下语法将其转换为ASCII编码:

data = data.toString('ascii', 0, data.length)

或转换为UTF-8编码:

data = data.toString('utf8', 0, data.length)

异步:

fs.readFile('test.txt', 'utf8', function (error, data) {
    if (error) throw error;
    console.log(data.toString());
});