當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Node.js fs.createReadStream(path[, options])用法及代碼示例


fs.createReadStream(path[, options])

曆史
版本變化
v16.10.0

如果提供了fd,則fs 選項不需要open 方法。

v16.10.0

如果 autoClosefalse ,則 fs 選項不需要 close 方法。

v15.4.0

fd 選項接受 FileHandle 參數。

v14.0.0

emitClose 默認更改為 true

v13.6.0、v12.17.0

fs 選項允許覆蓋使用的 fs 實現。

v12.10.0

啟用emitClose 選項。

v11.0.0

startend 施加新的限製,在我們無法合理處理輸入值的情況下拋出更合適的錯誤。

v7.6.0

path 參數可以是使用 file: 協議的 WHATWG URL 對象。

v7.0.0

傳遞的options 對象永遠不會被修改。

v2.3.0

傳遞的options 對象現在可以是字符串。

v0.1.31

添加於:v0.1.31


參數

<stream.Readable> 的 16 KiB 默認 highWaterMark 不同,此方法返回的流的默認 highWaterMark 為 64 KiB。

options 可以包含 startend 值,以從文件而不是整個文件中讀取字節範圍。 startend 都包含在內並從 0 開始計數,允許的值在 [0, Number.MAX_SAFE_INTEGER ] 範圍內。如果指定了 fd 並且省略了 startundefined ,則 fs.createReadStream() 從當前文件位置開始順序讀取。 encoding 可以是 <Buffer> 接受的任何一種。

如果指定了fd,則ReadStream 將忽略path 參數並使用指定的文件說明符。這意味著不會發出 'open' 事件。 fd 應該是阻塞的;非阻塞 fd 應該傳遞給 <net.Socket>

如果fd 指向僅支持阻塞讀取的字符設備(例如鍵盤或聲卡),則讀取操作在數據可用之前不會完成。這可以防止進程退出和流自然關閉。

默認情況下,流將在銷毀後發出 'close' 事件。將 emitClose 選項設置為 false 以更改此行為。

通過提供 fs 選項,可以覆蓋 openreadclose 的相應 fs 實現。提供fs 選項時,需要覆蓋read。如果未提供 fd,則還需要覆蓋 open。如果 autoClosetrue ,則還需要覆蓋 close

import { createReadStream } from 'node:fs';

// Create a stream from some character device.
const stream = createReadStream('/dev/input/event0');
setTimeout(() => {
  stream.close(); // This may not close the stream.
  // Artificially marking end-of-stream, as if the underlying resource had
  // indicated end-of-file by itself, allows the stream to close.
  // This does not cancel pending read operations, and if there is such an
  // operation, the process may still not be able to exit successfully
  // until it finishes.
  stream.push(null);
  stream.read(0);
}, 100);

如果autoClose 為假,則即使出現錯誤,文件說明符也不會關閉。關閉它並確保沒有文件說明符泄漏是應用程序的責任。如果 autoClose 設置為 true(默認行為),則在 'error''end' 上,文件說明符將自動關閉。

mode 設置文件模式(權限和粘性位),但前提是文件已創建。

讀取 100 字節長文件的最後 10 字節的示例:

import { createReadStream } from 'node:fs';

createReadStream('sample.txt', { start: 90, end: 99 });

如果options 是字符串,則它指定編碼。

相關用法


注:本文由純淨天空篩選整理自nodejs.org大神的英文原創作品 fs.createReadStream(path[, options])。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。