Java-字節流(輸入輸出流InPutStream、OutputStream)

使用字節流會出現的問題:

遇到中文字符是,可能不會顯示完整的字符。

解決這個問題就用到的是字符流,字符流專門處理文本文件。

GBK和UTF-8:

GBK:主要用於中文編碼,長度佔2個字節

UTF-8:包含全世界用到的字符,會佔用更多的數據庫存儲空間,長度佔3個字節

一、字節輸出流-OutputStream

抽象類,字節輸出流所有的超類

基本共性功能方法:

子類:File Out out stream(文件字節輸出流)

作用:把內存中的數據寫入到硬盤文件中

構造方法:

FileOutputstream(String name)創建一個向具有指定名稱的文件中寫入數據的輸出文件流。

FileOutputstream(File file)創建一個指定File對象表示的文件中寫入如數據的文件輸出流。

 

寫入數據的原理

(內存->硬盤):java程序-JVM(虛擬機)-OS(操作系統)-OS調用寫數據的方法-把數據寫到文件中

練習:一次寫一個字節,流的使用步驟

步驟一:

創建一個FileOutputStream對象

FileOutputStream fos = new File OutputStream(name:“寫入的目的地”);

步驟二:

調用共性功能方法write,把數據寫到文件中

fos.write(b:49);//49表示1,一次就放進一個1

步驟三:

寫入後要釋放資源(流使用會佔用一定的內存,使用完畢清空,提供程序效率)使用close

fos.close();

練習:一次寫入多個字節

步驟一:

創建一個對象

FileOutputStream fos = new File OutputStream(name:“相對/絕對路徑\\文件名”);

步驟二:

寫一個數組,再把數組傳進去

Byte[] bytes = {65,66,67,68};//查詢ASCII碼,得ABCD

fos.write(bytes);

步驟三:

釋放

fos.close();

續寫和換行:

續寫

 使用兩個參數的構造方法:

FileOutputStream(String name,boolean append)//name是寫入的目的地;

    append追加寫開關,有true和false。

          true不會覆蓋源文件,繼續在文件末尾追加寫數據;

          false創建新文件,覆蓋;

換行

Windows:\r\n

Linux:\n

Mac:\r

例子:

 

二、字節輸入流-InputStream

 

子類:FileInputstream(文件字節輸入流)

作用:把硬盤文件的數據,讀取到內存中使用

構造方法:

FileInputstream(String name);Srting name 文件路徑

FileInputstream(File file);文件

構造方法的作用:

創建FileInputstream對象,把對象指定方法讀取文件

讀取數據的原理:

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

 

練習:一次讀取一個

步驟一:

創建一個對象

FileInputStream fis = new FileInputStream(name:“要讀取的路徑”);

步驟二:

把FileInputStream對象指定構造方法中要讀取的文件

Int len = fis.read();//讀取要有返回值

System.out.println(len);//輸出

步驟三:

關閉釋放資源

fis.close();

練習:一次讀取多個

步驟一:

創建一個對象

步驟二:

把FileInputStream對象指定構造方法中要讀取的文件

Byte[] bytes = new byte[2];//定義一個數組,長度爲兩位

Int len = fis.read(bytes);

System.out.prinln(Arrays.toString(bytes));

步驟三:

關閉釋放資源

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