为什么Node.js的fs.readFile()返回一个缓冲区而不是string?
我试图读取test.txt的内容(这是在Javascript源相同的文件夹),并使用此代码显示它: 
 var fs = require("fs"); fs.readFile("test.txt", function (err, data) { if (err) throw err; console.log(data); }); 
  test.txt的内容是在nano创build的: 
testingNode.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 ...> 。 指定一个有效的编码,例如utf-8 ,作为文件名后的第二个参数。 如, 
 fs.readFile("test.txt", "utf8", function(err, data) {...}); 
尝试
 fs.readFile("test.txt", "utf8", function(err, data) {...}); 
基本上你需要指定编码。
它正在返回一个Buffer对象。
 如果你想要一个string,你可以用data.toString()来转换它: 
 var fs = require("fs"); fs.readFile("test.txt", function (err, data) { if (err) throw err; console.log(data.toString()); }); 
  datavariables包含一个Buffer对象。 使用以下语法将其转换为ASCII编码: 
 data.toString('ascii', 0, data.length) 
asynchronous:
 fs.readFile('test.txt', 'utf8', callback); 
同步:
 var content = fs.readFileSync('test.txt', 'utf8');