Node.js 将文件作为字符串(不是缓冲区)同步读取

mil*_*od1 7 javascript string buffer file node.js

如何将 Node.js 中的文件作为字符串而不是缓冲区读取?我正在用 Node.js 编写一个程序。在那里我需要同步读取一个文件,但是如果我这样做,它会将它作为缓冲区而不是字符串返回。我的代码看起来像这样:

const fs = require('fs');

let content = fs.readFileSync('./foo.txt');
console.log(content) // actually logs it as a buffer
Run Code Online (Sandbox Code Playgroud)

请帮忙。

小智 13

fs.readFileSync采用第二个参数,允许您使用选项指定 JSON 对象,包括返回数据的编码。如果您不指定一个,则Buffer默认返回一个。因此,您可以将编码添加到此示例以将其作为字符串返回。

让我们将编码选项添加到我们设置content变量的示例中。我们将编码设置为 UTF-8,这是一个标准。

let content = fs.readFileSync('./foo.txt', {encoding: 'utf8'});

如果您不需要指定任何其他选项,还有一个快捷方式:

let content = fs.readFileSync('./foo.txt', 'utf8');

现在当我们登录时content,我们应该有一个String我们使用的结果。

官方文档:https : //nodejs.org/api/fs.html#fs_fs_readfilesync_path_options