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

请帮忙。

fs.readFileSync采用第二个参数,该参数允许您指定具有选项的对象,包括返回数据的编码。如果未指定一个,则默认情况下会返回一个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

除了传递编码以确保获得字符串而不是缓冲区外,fs.readFileSync函数的options参数还允许您传递标志。

此方法的默认标志是"r",它打开文件进行读取。如果你打开它进行阅读和写作,那么你应该传递另一个标志——"r+"。

如果你打开文件进行读写,而不仅仅是阅读,你的代码会是这样的:

const content = fs.readFileSync('./foo.txt/', 'utf-8', 'r+');
console.log(content);

由于这是node.js,因此应该考虑使用async fs.readFile函数。当然,你必须给它一个回调。

最新更新