Why does Node.js' fs.readFile() return a buffer instead of string?

Viewed 361625

I'm trying to read the content of test.txt(which is on the same folder of the Javascript source) and display it using this code:

var fs = require("fs");

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

The content of the test.txt was created on nano:

Testing Node.js readFile()

And I'm getting this:

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$ 
8 Answers

You're missing the encoding scheme at the second parameter, which is usually be "utf-8". Plain buffer is returned if no coding scheme is mentioned.

If it's not a media file then you can use the .toString() method.

Related