1. 程式人生 > >Java 字元流和位元組流-學習筆記

Java 字元流和位元組流-學習筆記

 一:字元流
 Reader和Writer(基類)
 FileReader和FileWriter(定義字元輸入、輸出流)
 BufferedReader和BufferedWriter(字元帶緩衝輸入、輸出流)
 LineNumberReader
 
 二:字元流拷貝檔案,4中方式
 1.FileReader和FileWriter逐個字元拷貝
 2.FileReader和FileWriter自定義陣列拷貝
 3.BufferedReader和BufferedWriter內建緩衝區逐個字元拷貝
 4.BufferedReader和BufferedWriter逐行拷貝
 
  三:位元組流
    OutputStream和InputStream(基類)
    FileOutputStream和FileInputStream(位元組帶緩衝輸入、輸出流)
    BufferedInputStream和BufferedOutputStream(位元組緩衝輸入、輸出流)
   
  四:字元流拷貝檔案,3種方式
 1.FileInputStream和FileOutputStream, 逐個位元組拷貝
 2.FileInputStream和FileOutputStream, 自定義陣列拷貝  
 3.BufferedInputStream和BufferedOutputStream, 內建緩衝區拷貝
 
  五:什麼時候使用字元流,位元組流
 當讀取和寫出一個字串,使用字元流
 當拷貝一個字串,使用位元組流
 在我們讀寫任何資料的時候, 都能用位元組流來做. 但是如果需要讀寫字元的時候, 使用位元組流的話, 需要人工解碼編碼.
 當我們讀寫字元的時候, 使用字元流更為方便, 它可以替我們自動解碼編碼.
 當我們得到一個位元組流, 需要向這個位元組流中讀寫字元資料, 可以使用轉換流將位元組流轉為字元流.
 
  六:轉換流
  1.InputStreamReader, OutputStreamWriter
  2.位元組流和字元流之間的橋樑, 可以從位元組流中讀取字元, 可以向位元組流中寫出字元
 
  七:什麼時候用轉換流和編碼
  1.當我們得到一個位元組輸入流, 想從中讀取字元的時候, 就可以使用InputStreamReader.
  2.當我們得到一個位元組輸出流, 想向其寫出字元的時候, 就可以使用OutputStreamWriter.
  3.當我們讀取非平臺預設編碼的字元資料時, 需要使用InputStreamReader.
  4.當我們寫出非平臺預設編碼的字元資料時, 需要使用OutputStreamWriter.
 
  八.標準輸入、輸出流
 1.標準輸入流
  System.in是標準輸入流, 預設可以從鍵盤輸入讀取位元組資料.
  可以使用System.setIn(InputStream)修改資料來源.
 2.標準輸出流
  System.out是標準輸出流, 預設可以向螢幕輸出資料
  可以使用System.setOut(PrintStream)修改資料目的地.
 3.可以使用標準輸入輸出流拷貝檔案
 
 練習:1.加密
  九.位元組流和字元流的三種讀取方式
    位元組流讀取方式:
  //第一種,是一個位元組、一個位元組的的讀,然後讀到記憶體中, 然後一個一個的寫出,速度最慢
  //第二種,是一個位元組、一個位元組 的讀,讀到陣列中,讀滿後,一塊寫出,速度最快(每次讀到程式中一個數組, 寫出去一個數組)
  //第三種,是一個位元組、一個位元組的讀,先讀到內建的緩衝去中,然後一個一個的寫出,速度很快(第一次讀的時候讀8192個, 每次read()和write()方法時從緩衝區中讀到1個寫再寫到緩衝區中1個)
   字元流的讀寫方式
        基本和位元組流一樣,但它讀寫的是字元