Object 內建對象

對象BufferedStream

快取讀取對象

BufferedStream 物件是用於二進位流讀取的快取流物件。它可以對其底層流進行緩存,並提供文字讀取能力。使用BufferedStream 物件時,只需要將待處理的流物件作為建構參數傳入即可。創建方法:

1
var reader = new io.BufferedStream(stream);

BufferedStream 繼承自Stream對象,具有Stream物件的所有方法和屬性。其中,stream 屬性用於查詢建立快取物件時的流物件。 BufferedStream 物件也支援EOL 屬性用於查詢和設定行結尾識別(預設時,posix:\"\n\";windows:\"\r\n\")以及charset 屬性用於查詢和設定目前物件處理文本時的字符集,缺省為utf-8。

BufferedStream 物件在讀取流數據時,採用分塊的方式,先將數據讀入到緩衝區中,再從緩衝區中獲取數據,這樣可以有效減少讀取流數據時的網絡交互次數,提高了讀取效率。

BufferedStream 物件也提供了write 方法將給定的資料寫入流,並在底層流物件處於寫入阻塞時,等待其可以接受資料後再進行下一步操作。 Flush 方法將檔案緩衝區內容寫入實體裝置。 close 方法關閉目前流物件。部分方法的具體實作可以在子類別中實現。

在使用BufferedStream 物件時,需要注意不要將其與其他已經在使用的底層流物件混用,否則可能會導致資料重複讀取或讀取錯誤。

下面是一個使用BufferedStream 物件讀取文件內容的範例程式碼:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
var fs = require('fs'); var io = require('io'); var filename = "test.txt"; // open file var file = fs.openFile(filename); // create BufferedStream object var reader = new io.BufferedStream(file); // read file content var lines = reader.readLines(); for (var i = 0; i < lines.length; i++) console.log(lines[i]); // close file file.close();

繼承關係

建構函數

BufferedStream

BufferedStream 建構函數

1
new BufferedStream(Stream stm);

呼叫參數:

  • stm:Stream, BufferedStream 的二進位基礎流對象

成員屬性

stream

Stream, 查詢建立快取物件時的流對象

1
readonly Stream BufferedStream.stream;

charset

String, 查詢並設定目前物件處理文字時的字元集,缺省為utf-8

1
String BufferedStream.charset;

EOL

String, 查詢與設定行結尾標識,預設時,posix:\"\n\";windows:\"\r\n\"

1
String BufferedStream.EOL;

fd

Integer, 查詢Stream對應的文件描述符值, 由子類實現

1
readonly Integer BufferedStream.fd;

成員函數

readText

讀取指定字元的文本

1
String BufferedStream.readText(Integer size) async;

呼叫參數:

  • size: Integer, 指定讀取的文字字元數,以utf8 或指定的編碼位元組數為準

回傳結果:

  • String, 傳回讀取的文字字串,若無資料可讀,或連線中斷,則傳回null

readLine

讀取一行文本,行結尾標識基於EOL 屬性的設置,缺省時,posix:\"\n\";windows:\"\r\n\"

1
String BufferedStream.readLine(Integer maxlen = -1) async;

呼叫參數:

  • maxlen: Integer, 指定此次讀取的最大字串,以utf8 編碼位元組數為準,預設不限製字元數

回傳結果:

  • String, 傳回讀取的文字字串,若無資料可讀,或連線中斷,則傳回null

readLines

以陣列方式讀取一組文字行,行結尾標識基於EOL 屬性的設置,預設時,posix:\"\n\";windows:\"\r\n\"

1
Array BufferedStream.readLines(Integer maxlines = -1);

呼叫參數:

  • maxlines: Integer, 指定此讀取的最大行數,預設讀取全部文字行

回傳結果:

  • Array, 傳回讀取的文字行數組,若無資料可讀,或連線中斷,空數組

readUntil

讀取一個文字字串,以指定的位元組為結尾

1 2
String BufferedStream.readUntil(String mk, Integer maxlen = -1) async;

呼叫參數:

  • mk: String, 指定結尾的字串
  • maxlen: Integer, 指定此次讀取的最大字串,以utf8 編碼位元組數為準,預設不限製字元數

回傳結果:

  • String, 傳回讀取的文字字串,若無資料可讀,或連線中斷,則傳回null

writeText

寫入一個字串

1
BufferedStream.writeText(String txt) async;

呼叫參數:

  • txt: String, 指定寫入的字串

writeLine

寫入一個字串,並寫入換行符

1
BufferedStream.writeLine(String txt) async;

呼叫參數:

  • txt: String, 指定寫入的字串

read

從流內讀取指定大小的數據

1
Buffer BufferedStream.read(Integer bytes = -1) async;

呼叫參數:

  • bytes: Integer, 指定要讀取的資料量,預設為讀取隨機大小的資料區塊,讀取的資料尺寸取決於設備

回傳結果:

  • Buffer, 傳回從流內讀取的數據,若無數據可讀,或連線中斷,則傳回null

write

將給定的資料寫入流

1
BufferedStream.write(Buffer data) async;

呼叫參數:

  • data:Buffer, 給定要寫入的數據

flush

將檔案緩衝區內容寫入實體設備

1
BufferedStream.flush() async;

close

關閉目前流對象

1
BufferedStream.close() async;

copyTo

複製流資料到目標流中

1 2
Long BufferedStream.copyTo(Stream stm, Long bytes = -1) async;

呼叫參數:

  • stm:Stream, 目標流對象
  • bytes: Long, 複製的位元組數

回傳結果:

  • Long, 傳回複製的位元組數

toString

傳回物件的字串表示,一般回傳"[Native Object]",物件可以根據自己的特性重新實現

1
String BufferedStream.toString();

回傳結果:

  • String, 傳回物件的字串表示

toJSON

傳回物件的JSON 格式表示,一般傳回物件定義的可讀屬性集合

1
Value BufferedStream.toJSON(String key = "");

呼叫參數:

  • key: String, 未使用

回傳結果:

  • Value, 傳回包含可JSON 序列化的值