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