Java—字節流讀寫數據

學習筆記:字節流。
字節流抽象基類:

- public abstract class InputStream implements Closeable {}
//OutputStream是所有字節輸入流的超類
- public abstract class OutputStream implements Closeable, Flushable {}
//OutputStream是所有字節輸出流的超類
  • FileOutputStream:文件輸出流將數據寫如File,FileOutputStream是OutputStream子類。
    public FileOutputStream(String name):創建文件輸出流以指定的名稱寫入文件
  • FileInputStream :從文件中獲取輸入字節,FileInputStream是InputStream子類。
    public FileInputStream(String name)

目錄:
一、字節流寫數據
1、字節流寫數據的三種方式
2、字節流寫數據如何換行,如何追加寫入
二、字節流讀數據
1、字節輸入流讀數據:一次讀一個字節數據
2、字節輸入流複製文本文件
3、字節數組流讀數據:一次讀一個字節數組數據
4、字節緩衝流

一、字節流寫數據

1、字節流寫數據的三種方式
public class FileOutputStreamDemo {
    public static void main(String[] args) throws IOException {
        //public FileOutputStream(String name):創建我呢見輸出流以指定的名稱寫入文件
        FileOutputStream fos = new FileOutputStream("idea_test\\fos.txt");//idea_test爲當前模塊
        //public void write(int b)
        fos.write(97);

        //public void write(byte b[])
        byte[] bys = {97,98,99,100};
        fos.write(bys);

        byte[] bytes = "abcdefghigk".getBytes();
        fos.write(bytes,2,3);//cde
        //最後都要釋放資源
        //public void close():關閉此文件輸出流並釋放與此流相關聯的任何系統資源
        fos.close();
    }
}
2、字節流寫數據如何換行,如何追加寫入

二、字節流讀數據

1、字節輸入流讀數據
  • public int read()
import java.io.*;

public class FileInputStreamDemo {
    public static void main(String[] args) throws IOException {
       //1、創建字節輸入流對象
        FileInputStream fis = new FileInputStream("idea_test\\fos.txt");

        //2、讀數據
        /*
        //第一次讀取數據
        int read = fis.read();
        System.out.println(read);

        //第二次讀取數據
         read = fis.read();
        System.out.println(read);
        */
        //2、讀數據 優化上面代碼
        /*
        fis.read()讀數據
        by = fis.read():把讀取到的數據賦值給by
        by != -1:判斷讀取到的數據是否是-1
         */
        int by;
        while((by = fis.read()) != -1){
            System.out.println((char)by);
        }
        
        
        //3、釋放資源
        fis.close();
    }
}
2、字節輸入流複製文本文件
public class FileDemo {
    public static void main(String[] args) throws IOException {
       //1、創建字節輸入流對象
        FileInputStream fis = new FileInputStream("F:\\02-silu\\KETTLE_TEST\\java.txt");
        //根據目的地創建字節輸出流對象
        FileOutputStream fos = new FileOutputStream("idea_test\\java.txt");

        //讀寫數據,複製文本文件
        int by;
        while((by = fis.read()) != -1){
            fos.write(by);
        }

        //釋放資源
        fis.close();
        fos.close();
    }
}
3、字節數組流讀數據:一次讀一個字節數組數據
import java.io.*;

public class InterfaceDemo {
    public static void main(String[] args) throws IOException {
       //1、創建字節輸入流對象
        FileInputStream fis = new FileInputStream("F:\\02-silu\\KETTLE_TEST\\java.txt");
        FileInputStream fis1 = new FileInputStream("F:\\02-silu\\KETTLE_TEST\\java.txt");

        //讀數據:方法一
        byte[] bys = new byte[5];
        //第一次讀數據
        int read = fis.read(bys);
        System.out.println(read);
        System.out.println(new String(bys,0,read));
        //第二次讀數據
        read = fis.read(bys);
        System.out.println(read);
        System.out.println(new String(bys,0,read));
        //第三次讀數據
        read = fis.read(bys);
        System.out.println(read);
//        System.out.println(new String(bys,0,read));

        //第四次讀數據
        read = fis.read(bys);
        System.out.println(read);
        System.out.println("------------------");

        // //讀數據:方法二。讀數據改進
        byte[] b = new byte[1024];//1024及整數倍
        int len;
        while((len = fis1.read(b)) != -1){
            System.out.print(new String(b,0,len));
        }

        //釋放資源
        fis.close();
        fis1.close();
    }
}
4、字節緩衝流
public class BufferedInputStreamDemo {
    public static void main(String[] args) throws IOException {
       //1、創建字節緩衝流對象
        FileInputStream fis = new FileInputStream("F:\\02-silu\\KETTLE_TEST\\java.txt");
        BufferedInputStream bis = new BufferedInputStream(fis);
       //創建字節緩衝流對象,方式2
        BufferedInputStream bis2 = new BufferedInputStream(new FileInputStream("F:\\02-silu\\KETTLE_TEST\\java.txt"));

        fis.close();
        bis.close();
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章