在本文中,我們將討論 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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。