InputStream (字節流讀取)
java.io.InputStream
InputStream是一個抽象類. 字節流可以操作任何類型的2進制文件
InputStream常用實現類的繼承關系
- java.lang.Object
java.io.InputStream
java.io.FileInputStream
java.io.BufferedInputStream
常用子類就是FileInputStream 和 BufferedInputStream
InputStream共性方法 (子類通用)
返回值和修飾符 | 方法 | 說明 |
---|---|---|
void | close() | 關閉此輸入流並釋放與該流關聯的所有系統資源。 (推薦在finally中關閉) |
abstract int | read() | 從輸入流中讀取數據的下一個字節。 |
int | read(byte[] b) | 從輸入流中讀取一定數量的字節, 並將其存儲在緩沖區數組 b 中。 |
int | read(byte[] b, int off, int len) | 將輸入流中最多 len 個數據字節讀入 byte 數組。 |
FileInputStream子類
(普通流)作為子類,我們可以學習他的創建對象的方式,而方法都是從父類繼承來的。一個一個讀取
構造方法
構造方法 | 說明 |
---|---|
FileInputStream( String name ) | 傳入一個文件路徑 |
FileInputStream( File file ) | 傳入一個FIle對象 |
讀取文件示例:
main方法中代碼
try {
// 1. 創建對象 -- 參數是文件路徑
String path = "D:\\DEV\\eclipse\\workspace\\day13\\testIO.txt";
InputStream in = new FileInputStream(path);
// 第二種方式創建對象 -- 參數是一個File對象
// InputStream in = new FileInputStream(new File(path));
// 2. 開始讀取
int b = -2;
while ((b = in.read()) != -1) {
System.out.println(b);
}
// 釋放資源
in.close();
} catch (IOException e) {
e.printStackTrace();
}
BufferedInputStream子類
BufferedInputStream(也稱為 緩沖流) 為另一個輸入流添加一些功能,創建一個內部緩沖區數組。(高效), 按塊讀取, 默認緩沖區大小: 8192(8KB), 這個緩沖區默認最合適, 一般不需要修改
構造器
第二種不常用, 默認緩沖區大小性能已經很好了, 一般不修改
構造器 | 說明 |
---|---|
BufferedInputStream( InputStream in ) | 一般 傳入一個FileInputStream |
BufferedInputStream( InputStream in, int size ) | size是指定緩存區大小,(一般不用)系統默認是8192(8KB) |
讀取文件實例:
main方法中代碼
try {
// 1. 創建對象
String path = "D:\\DEV\\eclipse\\workspace\\day13\\testIO.txt";
InputStream in = new BufferedInputStream(new FileInputStream(path));
// 2. 開始讀取
int b = 0;
while ((b = in.read()) != -1) {
System.out.println(b);
}
// 3. 釋放資源
in.close();
} catch (IOException e) {
e.printStackTrace();
}