Node.js 同步读取文件作为字符串(不是缓冲区)
Node.js read a file as a string (not buffer) synchronously
如何将 Node.js 中的文件作为字符串而不是缓冲区来读取?我正在 Node.js 制作一个程序。在那里我需要同步读取一个文件,但如果我这样做,它 returns 它作为一个缓冲区而不是一个字符串。我的代码看起来像这样:
const fs = require('fs');
let content = fs.readFileSync('./foo.txt');
console.log(content) // actually logs it as a buffer
请帮忙。
fs.readFileSync
采用第二个参数,允许您指定带有选项的 JSON 对象,包括 returned 数据的编码。如果不指定,则默认 return 为 Buffer
。因此,您可以将此示例的编码添加到 return 作为字符串。
让我们在设置 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 函数的选项参数还允许您传入标志。
该方法的默认标志是"r",打开文件进行读取。如果你打开它进行读写,那么你应该传入另一个标志 - "r+".
如果您打开文件进行读写而不只是读取,您的代码将如下所示:
const content = fs.readFileSync('./foo.txt/', 'utf-8', 'r+');
console.log(content);
因为这是 node.js,您应该考虑改用异步 fs.readFile 函数。当然,你必须传递一个回调。
如何将 Node.js 中的文件作为字符串而不是缓冲区来读取?我正在 Node.js 制作一个程序。在那里我需要同步读取一个文件,但如果我这样做,它 returns 它作为一个缓冲区而不是一个字符串。我的代码看起来像这样:
const fs = require('fs');
let content = fs.readFileSync('./foo.txt');
console.log(content) // actually logs it as a buffer
请帮忙。
fs.readFileSync
采用第二个参数,允许您指定带有选项的 JSON 对象,包括 returned 数据的编码。如果不指定,则默认 return 为 Buffer
。因此,您可以将此示例的编码添加到 return 作为字符串。
让我们在设置 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 函数的选项参数还允许您传入标志。
该方法的默认标志是"r",打开文件进行读取。如果你打开它进行读写,那么你应该传入另一个标志 - "r+".
如果您打开文件进行读写而不只是读取,您的代码将如下所示:
const content = fs.readFileSync('./foo.txt/', 'utf-8', 'r+');
console.log(content);
因为这是 node.js,您应该考虑改用异步 fs.readFile 函数。当然,你必须传递一个回调。