1. 程式人生 > 其它 >java-IO流---位元組流

java-IO流---位元組流

IO流

一、IO流概述和分類

IO流介紹

  • IO:輸入/輸出(Input/Output)
  • 流:是一種抽象概念,是對資料傳輸的總稱。也就是說資料在裝置間的傳輸稱為流,流的本質是資料傳輸
  • IO流就是用來處理裝置間資料傳輸問題的。常見的應用:檔案複製;檔案上傳;檔案下載

IO流的分類
按照資料的流向

    • 輸入流:讀資料
    • 輸出流:寫資料

按照資料型別來分

    • 位元組流
      位元組輸入流(InputStream)
      位元組輸出流(OutputStream)
    • 字元流
      字元輸入流(Reader)
      字元輸出流(Writer)

二、位元組輸出流(OutputStream)

位元組流寫資料的三種方式

public class FileOutputStreamDemo02 {
    public static void main(String[] args) throws IOException {
        //FileOutputStream(String name):建立檔案輸出流以指定的名稱寫入檔案
        FileOutputStream fos = new FileOutputStream("myByteStream\\fos.txt");
        //new File(name)
//        FileOutputStream fos = new FileOutputStream(new File("myByteStream\\fos.txt"));

        //FileOutputStream(File file):建立檔案輸出流以寫入由指定的 File物件表示的檔案
//        File file = new File("myByteStream\\fos.txt");
//        FileOutputStream fos2 = new FileOutputStream(file);
//        FileOutputStream fos2 = new FileOutputStream(new File("myByteStream\\fos.txt"));

        //void write(int b):將指定的位元組寫入此檔案輸出流
//        fos.write(97);
//        fos.write(98);
//        fos.write(99);
//        fos.write(100);
//        fos.write(101);

//        void write(byte[] b):將 b.length位元組從指定的位元組陣列寫入此檔案輸出流
//        byte[] bys = {97, 98, 99, 100, 101};
        //byte[] getBytes():返回字串對應的位元組陣列
        byte[] bys = "abcde".getBytes();
//        fos.write(bys);

        //void write(byte[] b, int off, int len):將 len位元組從指定的位元組陣列開始,從偏移量off開始寫入此檔案輸出流
//        fos.write(bys,0,bys.length);
        fos.write(bys,1,3);

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

三、位元組輸入流(InputStream)

位元組流讀資料

我們通過兩個案例來體會讀資料的操作

1.位元組流讀資料(一次讀一個位元組)

現步驟

複製文字檔案,其實就把文字檔案的內容從一個檔案中讀取出來(資料來源),然後寫入到另一個檔案中(目的地)

資料來源:

​ E:\itcast\xxx.txt — 讀資料 — InputStream — FileInputStream 。我們從E盤的itcast檔案中讀取一個txt檔案。

目的地:

​ myByteStream\xxx.txt — 寫資料 — OutputStream — FileOutputStream。將讀到的資料寫入到myByteStream模組下的txt文件中

2.位元組流讀資料(一次讀一個位元組陣列)

如果我們需要一次讀一個位元組陣列則需要知道一次讀一個位元組陣列的方法