在本文中,我们将讨论 Nodejs 中 readFile 和 createReadStream 的区别。两者都是允许我们打开文件/流并读取其中存在的数据的模块。
1. readFile:fs模块包含readFile方法。它用于通过将文件放入缓冲区来读取文件。它是一种异步方法,因此,它读取文件时不会阻塞代码的执行。首先,我们将 fs 模块引入我们的应用程序,然后使用其中的 readFile 方法。
用法:
fs.readFile( filename, encoding, callback_function)
参数:
- filename:它保存必须读取的文件的路径。
- encoding:它保存文件的编码。如果未指定选项,则返回原始缓冲区,默认值为‘utf8’。
- callback_function: 它是一个在读取文件后调用的函数,包含两个参数 err 和 data。如果遇到任何错误,则会将其存储在 err 中,否则文件的内容将存储在 data 中。
返回值:它返回文件的内容。
例子:在这个例子中,我们使用readFile方法读取文件,要读取的文件是output.txt。
output.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。
Output.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 的内存清理并不容易。 |
相关用法
- Node.js readStream.setRawMode()用法及代码示例
- Node.js readStream.isRaw用法及代码示例
- Node.js readStream.isTTY用法及代码示例
- Node.js readlinePromises.Interface rl.question(query[, options])用法及代码示例
- Node.js readlinePromises.createInterface(options)用法及代码示例
- Node.js readline.Interface rl.question(query[, options], callback)用法及代码示例
- Node.js readline.createInterface(options)用法及代码示例
- Node.js readline.emitKeypressEvents(stream[, interface])用法及代码示例
- Node.js readable._construct(callback)用法及代码示例
- Node.js readable.push(chunk[, encoding])用法及代码示例
- Node.js response.addTrailers()用法及代码示例
- Node.js request.writableEnded用法及代码示例
- Node.js request.socket用法及代码示例
- Node.js response.write()用法及代码示例
- Node.js response.writeContinue()用法及代码示例
- Node.js response.writeHead()用法及代码示例
- Node.js response.removeHeader()用法及代码示例
- Node.js response.getHeaders()用法及代码示例
- Node.js response.setHeader()用法及代码示例
- Node.js response.getHeaderNames()用法及代码示例
- Node.js response.hasHeader()用法及代码示例
- Node.js require(id)用法及代码示例
- Node.js require.cache用法及代码示例
- Node.js require.extensions用法及代码示例
- Node.js require.main用法及代码示例
注:本文由纯净天空筛选整理自namancourses大神的英文原创作品 Difference between readFile and createReadStream in Node.js。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。