javascript Node.js以字符串(而不是缓冲区)的形式同步读取文件

ojsjcaue  于 2022-11-27  发布在  Java
关注(0)|答案(2)|浏览(137)

如何在Node.js中以字符串而不是缓冲区的形式读取文件?我在Node.js中编写了一个程序。在那里,我需要同步读取一个文件,但如果我这样做,它将以缓冲区的形式返回它,而不是字符串。我的代码如下所示:

const fs = require('fs');

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

请帮帮忙。

guykilcj

guykilcj1#

fs.readFileSync接受第二个参数,该参数允许您指定一个带有选项的对象,包括返回数据的编码。如果您没有指定一个参数,则默认情况下它返回Buffer。因此,您需要将编码添加到该示例中,以将其作为String返回。
让我们在这个例子中添加encoding选项,在这里我们设置了content变量,我们将编码设置为UTF-8,这是一个标准。
let content = fs.readFileSync('./foo.txt', {encoding: 'utf8'});
如果您不需要指定任何其他选项,也可以使用快捷方式:
let content = fs.readFileSync('./foo.txt', 'utf8');
现在,当我们记录content时,我们应该得到String作为我们使用的结果。
Official Documentation: https://nodejs.org/api/fs.html#fs_fs_readfilesync_path_options

5f0d552i

5f0d552i2#

除了传递编码以确保获得字符串而不是缓冲区之外,fs.readFileSync函数的options参数还允许传入一个标志。
这个方法的默认标志是“r”,它打开文件进行阅读。如果你打开文件进行读写,那么你应该传入另一个标志-“r+"。
如果您打开文件进行阅读而不仅仅是读取,则代码将如下所示:

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

由于这是node.js,您应该考虑使用async fs.readFile函数来代替,当然您必须传递一个回调函数。

相关问题