Node.js readFile和createReadStream的区别

Node.js readFile和createReadStream的区别

在本文中,我们将讨论readFile和createReadStream在Nodejs中的区别。这两个模块都允许我们打开一个文件/流并读取其中的数据。

1. **readFile :** fs模块包含了readFile方法。它用于将文件读入缓冲区中。它是一个异步方法,由于这个原因,它在不阻止代码执行的情况下读取文件。首先,我们将fs模块引入我们的应用程序中,然后在其中使用readFile方法。

语法:

fs.readFile( filename, encoding, callback_function)

参数:

  • filename: 它保存了要读取的文件的路径。
  • encoding: 它保存了文件的编码。如果没有指定选项,则返回原始缓冲区, 默认值为‘utf8’。
  • callback_function: 这是一个在读取文件后调用的函数,包含两个参数 err 和 data。如果遇到任何错误,则错误被存储在 err 中,否则文件的内容被存储在 data 中。

返回值: 它返回文件的内容。

示例: 在这个示例中,我们使用 readFile 方法读取文件,要读取的文件是 output.txt。

输出.txt 文件:

This is an output file read from readFile method.

index.js

const fs = require('fs'); 
fs.readFile('output.txt', 'utf8', (err, data) => { 
  console.log(`Data present in the file is::    ${data}`); 
}); 
console.log('Outside readFile method'); 

输出:

Outside readFile method
Data present in the file is::   
This is an output file read from readFile method.

**2. **createReadStream:fs模块包含内置的API(应用程序编程接口)createReadStream。它允许我们打开一个文件/流并读取其中的数据。

语法:

fs.createReadStream(path, options)

参数:

  • path(路径): 这个参数保存了需要读取的文件的路径。它可以是一个字符串,URL或者缓冲区。
  • options(选项): 这是一个可选参数。我们可以传递一个字符串或对象给它。
  • 返回值: 它返回一个ReadObject Stream对象。

示例: 在这个示例中,我们使用createReadStream.on方法来读取文件output.txt。

输出.txt文件:

This is an output file read from createReadStream method.

index.js

const fs = require('fs'); 
const createReader = fs.createReadStream('output.txt'); 
  
createReader.on('data', (data) => { 
  console.log(data.toString()); 
}); 
  
console.log('Outside createReader.on method'); 

输出:

Outside createReader.on method
This is an output file read from createReadStream method.

readFile和createReadStream的区别:

readFile createReadStream
将文件读入内存,然后供用户使用。 根据用户的需求,按块读取文件。
由于整个文件的读取,所以速度较慢。 由于按块读取的属性,所以速度较快。
当请求过多时,它无法扩展,因为它会尝试同时加载所有请求。 它可以扩展,因为将内容直接通过管道传输到HTTP响应对象。
由于其属性,在这种情况下,nodejs更容易处理内存清理。 在这种情况下,nodejs的内存清理不容易。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程