如何在Node.js中以字符串而不是缓冲区的形式读取文件?我在Node.js中编写了一个程序。在那里,我需要同步读取一个文件,但如果我这样做,它将以缓冲区的形式返回它,而不是字符串。我的代码如下所示:
const fs = require('fs');
let content = fs.readFileSync('./foo.txt');
console.log(content) // actually logs it as a buffer
请帮帮忙。
如何在Node.js中以字符串而不是缓冲区的形式读取文件?我在Node.js中编写了一个程序。在那里,我需要同步读取一个文件,但如果我这样做,它将以缓冲区的形式返回它,而不是字符串。我的代码如下所示:
const fs = require('fs');
let content = fs.readFileSync('./foo.txt');
console.log(content) // actually logs it as a buffer
请帮帮忙。
2条答案
按热度按时间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
5f0d552i2#
除了传递编码以确保获得字符串而不是缓冲区之外,fs.readFileSync函数的options参数还允许传入一个标志。
这个方法的默认标志是“r”,它打开文件进行阅读。如果你打开文件进行读写,那么你应该传入另一个标志-“r+"。
如果您打开文件进行阅读而不仅仅是读取,则代码将如下所示:
由于这是node.js,您应该考虑使用async fs.readFile函数来代替,当然您必须传递一个回调函数。