對象BufferedStream
快取讀取對象
BufferedStream 物件是用於二進位流讀取的快取流物件。它可以對其底層流進行緩存,並提供文字讀取能力。使用BufferedStream 物件時,只需要將待處理的流物件作為建構參數傳入即可。創建方法:
1var 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
19var 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 建構函數
1new BufferedStream(Stream stm);
呼叫參數:
- stm:Stream, BufferedStream 的二進位基礎流對象
成員屬性
stream
Stream, 查詢建立快取物件時的流對象
1readonly Stream BufferedStream.stream;
charset
String, 查詢並設定目前物件處理文字時的字元集,缺省為utf-8
1String BufferedStream.charset;
EOL
String, 查詢與設定行結尾標識,預設時,posix:\"\n\";windows:\"\r\n\"
1String BufferedStream.EOL;
fd
Integer, 查詢Stream對應的文件描述符值, 由子類實現
1readonly Integer BufferedStream.fd;
成員函數
readText
讀取指定字元的文本
1String BufferedStream.readText(Integer size) async;
呼叫參數:
- size: Integer, 指定讀取的文字字元數,以utf8 或指定的編碼位元組數為準
回傳結果:
- String, 傳回讀取的文字字串,若無資料可讀,或連線中斷,則傳回null
readLine
讀取一行文本,行結尾標識基於EOL 屬性的設置,缺省時,posix:\"\n\";windows:\"\r\n\"
1String BufferedStream.readLine(Integer maxlen = -1) async;
呼叫參數:
- maxlen: Integer, 指定此次讀取的最大字串,以utf8 編碼位元組數為準,預設不限製字元數
回傳結果:
- String, 傳回讀取的文字字串,若無資料可讀,或連線中斷,則傳回null
readLines
以陣列方式讀取一組文字行,行結尾標識基於EOL 屬性的設置,預設時,posix:\"\n\";windows:\"\r\n\"
1Array BufferedStream.readLines(Integer maxlines = -1);
呼叫參數:
- maxlines: Integer, 指定此讀取的最大行數,預設讀取全部文字行
回傳結果:
- Array, 傳回讀取的文字行數組,若無資料可讀,或連線中斷,空數組
readUntil
讀取一個文字字串,以指定的位元組為結尾
1
2String BufferedStream.readUntil(String mk,
Integer maxlen = -1) async;
呼叫參數:
- mk: String, 指定結尾的字串
- maxlen: Integer, 指定此次讀取的最大字串,以utf8 編碼位元組數為準,預設不限製字元數
回傳結果:
- String, 傳回讀取的文字字串,若無資料可讀,或連線中斷,則傳回null
writeText
寫入一個字串
1BufferedStream.writeText(String txt) async;
呼叫參數:
- txt: String, 指定寫入的字串
writeLine
寫入一個字串,並寫入換行符
1BufferedStream.writeLine(String txt) async;
呼叫參數:
- txt: String, 指定寫入的字串
read
從流內讀取指定大小的數據
1Buffer BufferedStream.read(Integer bytes = -1) async;
呼叫參數:
- bytes: Integer, 指定要讀取的資料量,預設為讀取隨機大小的資料區塊,讀取的資料尺寸取決於設備
回傳結果:
- Buffer, 傳回從流內讀取的數據,若無數據可讀,或連線中斷,則傳回null
write
將給定的資料寫入流
1BufferedStream.write(Buffer data) async;
呼叫參數:
- data:Buffer, 給定要寫入的數據
flush
將檔案緩衝區內容寫入實體設備
1BufferedStream.flush() async;
close
關閉目前流對象
1BufferedStream.close() async;
copyTo
複製流資料到目標流中
1
2Long BufferedStream.copyTo(Stream stm,
Long bytes = -1) async;
呼叫參數:
- stm:Stream, 目標流對象
- bytes: Long, 複製的位元組數
回傳結果:
- Long, 傳回複製的位元組數
toString
傳回物件的字串表示,一般回傳"[Native Object]",物件可以根據自己的特性重新實現
1String BufferedStream.toString();
回傳結果:
- String, 傳回物件的字串表示
toJSON
傳回物件的JSON 格式表示,一般傳回物件定義的可讀屬性集合
1Value BufferedStream.toJSON(String key = "");
呼叫參數:
- key: String, 未使用
回傳結果:
- Value, 傳回包含可JSON 序列化的值