JAVA基礎------字節流、字符流

什麼是IO ?

生活中,你肯定經歷過這樣的場景。當你編輯一個文本文件,忘記了 ctrl+s ,可能文件就白白編輯了。當你電腦 上插入一個U盤,可以把一個視頻,拷貝到你的電腦硬盤裏。那麼數據都是在哪些設備上的呢?鍵盤、內存、硬 盤、外接設備等等。 我們把這種數據的傳輸,可以看做是一種數據的流動,按照流動的方向,以內存爲基準,分爲 輸入input 和 輸出 output ,即流向內存是輸入流,流出內存的輸出流。 Java中I/O操作主要是指使用 java.io 包下的內容,進行輸入、輸出操作。輸入也叫做讀取數據,輸出也叫做作寫 出數據。

IO的分類

根據數據的流向分爲:輸入流和輸出流。

輸入流 :把數據從 其他設備 上讀取到 內存 中的流。
輸出流 :把數據從 內存 中寫出到 其他設備 上的流。
格局數據的類型分爲:字節流和字符流。

字節流 :以字節爲單位,讀寫數據的流。
字符流 :以字符爲單位,讀寫數據的流。

字節流

一切皆爲字節

一切文件數據(文本、圖片、視頻等)在存儲時,都是以二進制數字的形式保存,都一個一個的字節,那麼傳輸時一 樣如此。所以,字節流可以傳輸任意文件數據。在操作流的時候,我們要時刻明確,無論使用什麼樣的流對象,底 層傳輸的始終爲二進制數據。

字節輸出流【OutputStream】

java.io.OutputStream 抽象類是表示字節輸出流的所有類的超類,將指定的字節信息寫出到目的地。它定義了字 節輸出流的基本共性功能方法

public void close() :關閉此輸出流並釋放與此流相關聯的任何系統資源。
public void flush() :刷新此輸出流並強制任何緩衝的輸出字節被寫出。
public void write(byte[] b) :將 b.length字節從指定的字節數組寫入此輸出流。
public void write(byte[] b, int off, int len) :從指定的字節數組寫入 len字節,從偏移量 offff開始輸 出到此輸出流。
public abstract void write(int b) :將指定的字節輸出流。

close方法,當完成流的操作時,必須調用此方法,釋放系統資源

FileOutputStream類

OutputStream 有很多子類,我們從最簡單的一個子類開始。
java.io.FileOutputStream 類是文件輸出流,用於將數據寫出到文件。

構造方法

public FileOutputStream(File file) :創建文件輸出流以寫入由指定的 File對象表示的文件。
public FileOutputStream(String name) : 創建文件輸出流以指定的名稱寫入文件。

當你創建一個流對象時,必須傳入一個文件路徑。該路徑下,如果沒有這個文件,會創建該文件。如果有這個文 件,會清空這個文件的數據。 構造舉例,代碼如下: public class FileOutputStreamConstructor throws IOException { public static void main(String[] args) { // 使用File對象創建流對象 File file = new File("a.txt"); FileOutputStream fos = new FileOutputStream(file); // 使用文件名稱創建流對象 FileOutputStream fos = new FileOutputStream("b.txt"); } }

寫出字節數據

  1. 寫出字節: write(int b) 方法,每次可以寫出一個字節數據,代碼使用演示: public class FOSWrite { public static void main(String[] args) throws IOException { // 使用文件名稱創建流對象 FileOutputStream fos = new FileOutputStream("fos.txt"); // 寫出數據 fos.write(97); // 寫出第1個字節 fos.write(98); // 寫出第2個字節 fos.write(99); // 寫出第3個字節 // 關閉資源 fos.close(); } } 輸出結果: abc

數據追加續寫

經過以上的演示,每次程序運行,創建輸出流對象,都會清空目標文件中的數據。如何保留目標文件中數據,還能 繼續添加新數據呢?

public FileOutputStream(File file, boolean append) : 創建文件輸出流以寫入由指定的 File對象表示的 文件。 public FileOutputStream(String name, boolean append) : 創建文件輸出流以指定的名稱寫入文件。

這兩個構造方法,參數中都需要傳入一個boolean類型的值, true 表示追加數據, false 表示清空原有數據。 這樣創建的輸出流對象,就可以指定是否追加續寫了

寫出換行

Windows系統裏,換行符號是 \r\n 。把 以指定是否追加續寫了

字節輸入流【InputStream】

java.io.InputStream 抽象類是表示字節輸入流的所有類的超類,可以讀取字節信息到內存中。它定義了字節輸入 流的基本共性功能方法。

public void close() :關閉此輸入流並釋放與此流相關聯的任何系統資源。
public abstract int read() : 從輸入流讀取數據的下一個字節。
public int read(byte[] b) : 從輸入流中讀取一些字節數,並將它們存儲到字節數組 b中 。

FileInputStream類

java.io.FileInputStream 類是文件輸入流,從文件中讀取字節。

構造方法

FileInputStream(File file) : 通過打開與實際文件的連接來創建一個 FileInputStream ,該文件由文件系 統中的 File對象 fifile命名。 FileInputStream(String name) : 通過打開與實際文件的連接來創建一個 FileInputStream ,該文件由文件 系統中的路徑名 name命名。

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