JavaSE的輸入流、輸出流

  1. 首先是四大基本抽象流,具體以下:
     字節流 字符流
輸入流 InputStream Reader
輸出流 OutputStream Writer

以上四個流都是抽象流)(但不是抽象類),一般咱們使用的都是它們的子類(注意是一般,這四個抽象類也能用,只是用得少)。java

而實際編程中會使用到的:編程

①文件流

  字節流 字符流
輸入流 FileInputStream(文件(字節)輸入流) FileReader
輸出流          FileOutputStream FileWriter

②緩衝流

  字節流 字符流
輸入流 BufferedInputStream  BufferedReader
輸出流 BufferedOutputStream BufferedWriter

緩衝流能夠提升數據傳輸的速度數組

③轉化流(就是把字節流轉換成字符流)

     
輸入流 InputStreamReader(字節流轉換成字符流) OutputStreamReader
輸出流 InputStreamWriter OutputStreamWriter 

用處例子:編程實現把用戶從鍵盤輸入的字符保存到一個String對象中。app

④數據流

  數據流
輸入流 DataInputStream(數據輸入流) 
輸出流 DataOutputStream(數據輸出流)

數據流能夠把基本類型數據的二進制直接讀入或寫出。url

用處例子:編程實現把long類型數據寫入到byte數組。 而後再從byte數組中把該數據讀出。spa

⑤Print流

  Print流
輸入流 PrintStream  
輸出流 PrintWriter

Print流能夠把基本數據類型的數據格式化後的字符串輸出。code

用處例子:編程實現把鍵盤輸入的數據寫入A文件,若是輸入有誤,則把出錯信息寫入B文件。對象

注意:ci

字節輸出流(OutputStream)和Print流不能同時使用,若是同時使用的話會報錯。字符串

⑥Object流(用的不是不少)

  Object流
輸入流 ObjectInputStream  
輸出流 ObjectOutputStream

Object流能夠把一個對象直接寫入或讀出。

 

這六種流每每是一套組合拳,舉例:

// 使用IO流讀取數據
BufferedReader buffer = new BufferedReader(new InputStreamReader(urlConn
	.getInputStream()));
while ((line = buffer.readLine()) != null) {
    sb.append(line);
}

獲取字符序列後,經過InputStreamReader將字符序列轉換成字節序列,可是因爲字節序列不方便被操做,因此再套在BufferedReader(緩衝輸入流)上。由於緩衝輸入流這個類中有readLine()這個成員方法,這個方法能夠一行一行地讀取文件中的數據。

相關文章
相關標籤/搜索