IO字節流8,9InputStream以及輸入流讀取字節數據

package com.itheima.demo02.InputStream;java

import java.io.FileInputStream;
import java.io.IOException;數組

/*優化

java.io.InputStream:字節輸入流
此抽象類是表示字節輸入流的全部類的超類。

定義了全部子類共性的方法:
     int read()從輸入流中讀取數據的下一個字節。
     int read(byte[] b) 從輸入流中讀取必定數量的字節,並將其存儲在緩衝區數組 b 中。
     void close() 關閉此輸入流並釋放與該流關聯的全部系統資源。

java.io.FileInputStream extends InputStream
FileInputStream:文件字節輸入流
做用:把硬盤文件中的數據,讀取到內存中使用

構造方法:
    FileInputStream(String name)
    FileInputStream(File file)
    參數:讀取文件的數據源
        String name:文件的路徑
        File file:文件
    構造方法的做用:
        1.會建立一個FileInputStream對象
        2.會把FileInputStream對象指定構造方法中要讀取的文件

讀取數據的原理(硬盤-->內存)
    java程序-->JVM-->OS-->OS讀取數據的方法-->讀取文件

字節輸入流的使用步驟(重點):
    1.建立FileInputStream對象,構造方法中綁定要讀取的數據源
    2.使用FileInputStream對象中的方法read,讀取文件
    3.釋放資源

*/
public class Demo01InputStream {code

public static void main(String[] args) throws IOException {
    //1.建立FileInputStream對象,構造方法中綁定要讀取的數據源
    FileInputStream fis = new FileInputStream("09_IOAndProperties\\c.txt");
    //2.使用FileInputStream對象中的方法read,讀取文件
    //int read()讀取文件中的一個字節並返回,讀取到文件的末尾返回-1
    /*int len = fis.read();
    System.out.println(len);//97 a

    len = fis.read();
    System.out.println(len);// 98 b

    len = fis.read();
    System.out.println(len);//99 c

    len = fis.read();
    System.out.println(len);//-1

    len = fis.read();
    System.out.println(len);//-1*/

    /*
        發現以上讀取文件是一個重複的過程,因此能夠使用循環優化
        不知道文件中有多少字節,使用while循環
        while循環結束條件,讀取到-1的時候結束

        布爾表達式(len = fis.read())!=-1
            1.fis.read():讀取一個字節
            2.len = fis.read():把讀取到的字節賦值給變量len
            3.(len = fis.read())!=-1:判斷變量len是否不等於-1
     */
    int len = 0; //記錄讀取到的字節
    while((len = fis.read())!=-1){
        System.out.print(len);//abc
    }

    //3.釋放資源
    fis.close();
}

}對象

相關文章
相關標籤/搜索