fs.readFileSync()没有回调和编码不起作用?

时间:2019-10-31 09:19:02

标签: node.js fs

我写了这个小的测试代码,试图调试我的另一个项目,发现fs.readFileSync()似乎没有回调函数,并且编码不起作用。

const fs = require("fs");

var x = fs.readFileSync(__dirname + "/file.txt", {encode: "utf8"}, () => {

    console.log("Callback function?");

});

console.log(x);

预期输出: “回调功能?” file.txt的内容

但是我只是收到“”

这是怎么了?

3 个答案:

答案 0 :(得分:2)

看看文档here。它显然没有显示任何回调,并且我猜想该调用不会起作用,因为您提供了一个函数而不是“ flags”选项,而且有点搞砸了。

此外,这也称为“ readFile SYNC ”-默认情况下,同步操作没有回调,您只需编写要在它们之后立即执行的操作,它就会在它们之后立即执行。没有时序问题,因为它们又是同步的。

适合您程序的代码为:

var x = fs.readFileSync(__dirname + "/file.txt", { encoding: "utf8" });,并且在您需要此日志或需要数据之后,该日志将位于X变量内。

答案 1 :(得分:0)

fs.readFileSync不执行回调,因为它同步运行。它将返回文件数据。

如果您希望异步读取文件,请使用fs.readFile

这是两个例子:

// Sync. readFile
const fileData = fs.readFileSync("some_file.txt", { encoding: "utf8"});
console.log("fileData:", fileData);

// Async. readFile
fs.readFile("some_file.txt", { encoding: "utf8"}, (err, fileData) => {
    if (err) {
        console.error("Error occurred:", err);
    } else {
        console.log("fileData:", fileData);
    }
});

答案 2 :(得分:0)

我不确定您是要在Node.js中还是异步进行同步操作,但是我看到您正在使用同步功能fs.readFileSync,并尝试通过异步方法进行访问

要读取文件,可以使用fs类的readFileSync方法:

  const fs = require("fs");
    const output = fs.readFileSync(__dirname + "/file.txt");
    console.log(output);

要异步获取数据,您将在回调中获取内容。

fs.readFile(filename, "utf8", (err, data) => {
        if (err) throw err;
        console.log(data)
    });