1. 程式人生 > 實用技巧 >Java日誌第37天 2020.8.11

Java日誌第37天 2020.8.11

位元組輸入流

java.lang.InputStream

此抽象類是表示位元組輸入流的所有類的超類

所有子類中共性的方法:

1. int read():從輸入流中讀取資料的下一個位元組

2. int read(byte[] b) :從輸入流中讀取一定數量的位元組,並將其儲存在緩衝區陣列b中

3. void close():關閉此輸入流並釋放與該流關聯的所有系統資源

FileInputStream

檔案位元組輸入流

java.io.FiIeInputStream entends InputStream

作用:把硬碟檔案中的資料讀取到記憶體中使用

構造方法

- FileInputStream(String name)

- FileInputStream(File file)

讀取一個位元組

import java.io.FileInputStream;
import java.io.IOException;

public class Demo01InputStream {

    public static void main(String[] args) throws IOException {
        //建立FileInputStream物件,構造方法中繫結要讀取的資料來源
        FileInputStream fis = new FileInputStream("E:\\Java\\Practice\\src\\Practice\\demo15\\a.txt");
        
//使用FileInputStream物件中的方法read,讀取檔案 //read方法一次讀取一個位元組,讀取至檔案末尾返回-1 int len = fis.read(); System.out.println((char) len); len = fis.read(); System.out.println((char) len); len = fis.read(); System.out.println((char) len); //釋放資源 fis.close(); } }

結果如下:

以上的重複程式碼可以使用while迴圈

import java.io.FileInputStream;
import java.io.IOException;

public class Demo01InputStream {

    public static void main(String[] args) throws IOException {
        //建立FileInputStream物件,構造方法中繫結要讀取的資料來源
        FileInputStream fis = new FileInputStream("E:\\Java\\Practice\\src\\Practice\\demo15\\a.txt");
        //使用FileInputStream物件中的方法read,讀取檔案
        //read方法一次讀取一個位元組,讀取至檔案末尾返回-1
        int len = 0;
        while((len = fis.read()) != -1){
            System.out.println((char) len);
        }

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

讀取多個位元組

import java.io.FileInputStream;
import java.io.IOException;
import java.util.Arrays;

public class Demo01InputStream {

    public static void main(String[] args) throws IOException {
        //建立FileInputStream物件,構造方法中繫結要讀取的資料來源
        FileInputStream fis = new FileInputStream("E:\\Java\\Practice\\src\\Practice\\demo15\\a.txt");
        //使用FileInputStream物件中的方法read,讀取檔案
        byte[] bytes = new byte[2];
        int len = fis.read(bytes);
        System.out.println("len = "+len);
        System.out.println(new String(bytes));

        len = fis.read(bytes);
        System.out.println("len = "+len);
        System.out.println(new String(bytes));

        len = fis.read(bytes);
        System.out.println("len = "+len);
        System.out.println(new String(bytes));

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

結果如下: