为什么fs.readFile返回缓冲区

Why is fs.readFile returning a buffer?

本文关键字:缓冲区 返回 readFile fs 为什么      更新时间:2023-09-26

我已经提到这个问题了。也就是说,我不认为我的问题在于对异步的误解。

这是我模块的相关部分。

var fs = require('fs');
var q = require('q');
var u = require('../utils/json');
var indexFile = './data/index.json';
function getIndex() {
    var def = q.defer(),
        promise = def.promise,
        obj;
    fs.readFile(indexFile, function(err,data) {
        if (err) {
            throw err;
            def.reject(err);
        }
        console.log('data', data);
        def.resolve(obj);
    });
    return promise;
}

当我记录"数据"时,我得到的是一个缓冲区(如下),而不是该文件的JSON内容。

<Buffer 5b 7b 22 68 65 6c 6c 6f 22 3a 22 77 6f 72 6c 64 22 7d 5d>

有什么想法吗?

根据'fs'模块的Node.js API文档,如果不传递encoding选项,read函数将返回一个缓冲区。

如果您传递一个值进行编码,它将返回一个具有该编码的字符串:

fs.readFile('/etc/passwd', 'utf-8', callback)

如前所述,fs模块需要编码选项作为第二个参数。

此外,如果您确定您的文件由utf-8字符串组成,则可以使用;

fs.readFile(indexFile, function(err,data) {
    if (err) {
        return def.reject(err);
    }
    console.log('data', data.toString());
    def.resolve(obj);
});

试试这个。。。你需要包括编码

fs.readFile(indexFile,'utf8', function(err,data) {
    if (err) {
        throw err;
    }
    //Do something with data
    console.log(data);
});