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

fs.readFileSync() no callback and encode doesn't work?

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

const fs = require("fs");

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

    console.log("Callback function?");

});

console.log(x);

预期输出: "Callback function?" file.txt

的内容

但我只是收到了“”

这里有什么问题?

fs.readFileSync 不接受回调,因为它是同步运行的。它将 return 文件数据。

如果您希望异步读取文件,请使用 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);
    }
});

查看文档 here。它清楚地显示没有回调,我猜这个调用不起作用,因为你提供了一个函数而不是 "flags" 选项,它有点搞砸了。

另外,这叫做 "readFileSYNC" - 默认情况下同步操作没有回调,您可以只写您想要在它们之后发生的事情 - 它会在它们之后立即发生。没有时间问题,因为它们是同步的。

您程序的正确代码是:

var x = fs.readFileSync(__dirname + "/file.txt", { encoding: "utf8" });,并且在此日志 w/e 之后,您想要或处理您想要的数据 w/e,它将在 X 变量中。

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

要读取文件,您可以使用 fs 的 readFileSync 方法 class:喜欢

  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)
    });