Java I/O 教程(六) BufferedInputStream 類
Java BufferedInputStream Class
Java BufferedInputStream class 用於從輸入流讀取資料,和BufferedOutStream一樣內部使用緩衝機制提高讀取效能。
需要注意的是:
當讀取流中位元組時,內部緩衝區每次會自動重新填滿多個位元組。
當一個緩衝輸入流建立時,一個內部緩衝區陣列也會建立。
類定義
public class BufferedInputStream extends FilterInputStream
建構函式
Creates a BufferedInputStream and saves its argument, the input stream in, for later use.
BufferedInputStream(InputStream in, int size)
Creates a BufferedInputStream with the specified buffer size, and saves its argument, the input stream in, for later use.
方法
int available() 返回輸入流中預計可讀取位元組數int read() 從輸入流讀取下一個位元組
int read(byte[] b, int off, int ln) 從指定的byte輸入流接收資料後寫入指定位元組陣列中,從指定偏移量開始
void close() 關閉輸入流並釋放任何與流相關的系統資源
void reset() 復位在mark方法最後一次呼叫的位置
void mark(int readlimit) 其實就是給輸入流在讀取到某個位元組時候打個標記,讓reset方法能夠回到這個標記的位置
long skip(long x) 跳過並拋棄x個位元組
boolean markSupported() 用於測試輸入流是否支援mark和reset方法
例子
package com.dylan.io;
import java.io.BufferedInputStream;
import java.io.FileInputStream;
import java.io.IOException;
/**
* @author xusucheng
* @create 2018-01-01
**/
public class BufferedInputStreamExample {
public static void main(String[] args) {
try {
FileInputStream fin = new FileInputStream("D:\\testout.txt");
BufferedInputStream bin = new BufferedInputStream(fin);
int i;
while ((i = bin.read()) != -1) {
//如果是中文,此方法不支援
System.out.print((char)i);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
輸出:Hello java.io!
關於mark和reset方法例子
package com.dylan.io;
import java.io.BufferedInputStream;
import java.io.FileInputStream;
import java.io.InputStream;
/**
* @author xusucheng
* @create 2018-01-01
**/
public class BufferedInputStreamMarkReset {
public static void main(String[] args) throws Exception {
InputStream iStream = null;
BufferedInputStream bis = null;
try {
// read from file c:/test.txt to input stream
iStream = new FileInputStream("D:/testmark.txt");
// input stream converted to buffered input stream
bis = new BufferedInputStream(iStream);
// read and print characters one by one
System.out.println("Char : " + (char) bis.read());
System.out.println("Char : " + (char) bis.read());
System.out.println("Char : " + (char) bis.read());
// mark is set on the input stream
bis.mark(0);
System.out.println("Char : " + (char) bis.read());
System.out.println("reset() invoked");
// reset is called
bis.reset();
// read and print characters
System.out.println("char : " + (char) bis.read());
System.out.println("char : " + (char) bis.read());
} catch (Exception e) {
e.printStackTrace();
} finally {
// releases any system resources associated with the stream
if (iStream != null)
iStream.close();
if (bis != null)
bis.close();
}
}
}
輸出:
Char : A
Char : B
Char : C
Char : D
reset() invoked
char : D
char : E
下一章
Java I/O 教程(七) DataOutputStream和DataInputStream
相關文章
- Java I/O 教程(四) FileInputStream 類Java
- Java I/O 教程(五) BufferedOutputStream 類Java
- Java I/O 教程(三) FileOutputStream類Java
- Java™ 教程(命令列I/O)Java命令列
- Java I/O 教程(一) 介紹Java
- Java I/O 教程(十) ObjectOutputStream和ObjectInputStreamJavaObject
- Java I/O 教程(七) DataOutputStream和DataInputStreamJavaAI
- Java I/O 教程(八) Writer和ReaderJava
- Java I/O 教程(九) FileWriter和FileReaderJava
- Java I/O 教程(二) 介紹OutputStream 和 InputStreamJava
- Java(8)I/OJava
- 【java】I/O流Java
- Java I/O流Java
- java的I/OJava
- Python教程:精簡概述I/O模型與I/O操作Python模型
- Java 非同步 I/OJava非同步
- JAVA I/O系統Java
- JAVA_IO 之BufferedInputStream BufferedOutputStreamJava
- Java基礎——I/O流Java
- java 淺析I/O模型Java模型
- 深入理解Java I/O模型Java模型
- "萬字" Java I/O 詳解Java
- Java I/O 模型的演進Java模型
- Java NIO:淺析I/O模型Java模型
- Java基礎I/O流型別Java型別
- Veritas Quick I/O and Cached Quick I/OUI
- Java I/O模型及其底層原理Java模型
- Java學習筆記之I/OJava筆記
- Java入門學習-理解I/OJava
- Java NIO1:I/O模型概述Java模型
- Java I/O流模型概念分析整理Java模型
- 【Java I/O】如何用Java讀寫檔案Java
- 計算機I/O與I/O模型計算機模型
- I/O埠和I/O記憶體記憶體
- java入門 -- Java I/O(四) 異常處理Java
- Java NIO學習系列五:I/O模型Java模型
- java的nio之:淺析I/O模型Java模型
- Java I/O流InputStream,OutputStream,Reader,WriterJava