1. 程式人生 > 實用技巧 >IO 的 一些小結

IO 的 一些小結

IO流

資料流:往記憶體中輸入,或從記憶體中輸出的資料。
IO流: 一組有順序,有起點,有終點的位元組的集合。

  • 按照流向分:
    輸入流(把磁碟中的資料讀取到記憶體中)
    輸出流(把記憶體中的資料寫入到磁碟中)

  • 按照資料單位的不同分:
    位元組流(每次讀/寫 一個位元組,當遇到中文時,會有亂碼,因為一箇中文是2個位元組)
    字元流(每次讀/寫 兩個位元組,遇到中文,也能正確顯示)

  • 按照流的角色劃分:
    節點流:向一個特定的地方(節點)讀寫資料。eg:FileInputStream
    處理流:是對一個已存在的流的連線和封裝,通過呼叫所封裝的流的功能,實現資料的讀寫。eg:BufferedReader

Java IO流 有4個抽象類(4個爸爸):

在這裡插入圖片描述
其他流(兒子)都是實現於上面4大父類的
在這裡插入圖片描述

位元組流與字元流的區別:
位元組流在操作時,是檔案本身直接操作的,不會用到緩衝區。
字元流在操作時,會用到緩衝區。
在這裡插入圖片描述
位元組輸入流 InputStream
java.io包下所有的位元組輸入流的爸爸都是InputStream,並且實現了爸爸中的方法。
主要的方法有:
int read()
int read(引數)
void close()
位元組輸入流,它還有很多子類,平時經常用到的有:
在這裡插入圖片描述
位元組輸出流 OutputStream
java.io包下的位元組輸出流 是從OutputStream繼承來的。
主要方法:
void write(引數)
void close()

void flush()
平時經常用到的位元組輸入流子類:
在這裡插入圖片描述

字元流:
ASCII字符集 一個字元就是一個位元組
Unicode字符集 一個字元是兩個位元組

字元輸入流 Reader
它是一個抽象類。
子類有:
CharReader
StringReader
BufferedReader
InputStreamReader(最重要)可以將位元組流轉為字元流。
Reader中各個類的用途和用法基本和InputStream中的類的方法使用一致。

字元輸出流 Writer
Writer是所有輸入字元流的父類,也是一個抽象類。
子類有:
CharWriter
StringWriter
BufferdWriter

OutputStreamWriter(最重要)可以將位元組流轉為字元流