標籤:txt src 對象 而且 資料顯示 儲存 建立 基礎 子類
之前學習io模糊模糊的,現在寫下,方便自己理解,和以後再熟悉輕鬆些。(長期更新)
以概念為主。
在學習之前,我們需要瞭解位元組與字元的概念。
字元流以字元(16 位二進位)為單位進行處理,主要用於文字檔等 Unicode 資料。
位元組流以位元組(8 位二進位)為單位進行處理,主要用於讀寫圖片、聲音、視頻等二進位 資料。
在這裡可以這樣簡單理解,例如漢字,漢字就是字元,涉及到漢字文本的用字元。
在大多數情況,位元組流更為普遍的,因為多數操作對象都是建立在位元組流基礎上的。
輸入情況
(位元組流) byte數組
FileInputStream()//建立檔案輸入資料流
BufferedInputStream() //建立一個緩衝輸入,讀取大檔案時,用上此方法效率更高。
(字元流)String
FileReader()//同上
BufferedReader()//同上
輸出情況簡要概括 input 換成output ,reader換成write(偷點懶)
有時候,需要字元位元組都用,而且還需在其間相互轉化使用。
InputStream提供的是位元組流的讀取,而非文本讀取,用Reader讀取出來的是char數組或者String ,使用InputStream讀取出來的是byte數組。
Reader類及其子類提供的字元流的讀取char,inputStream及其子類提供位元組流的讀取byte,所以 FileReader類是將檔案按字元流的方式讀取,FileInputStream則按位元組流的方式讀取檔案;InputStreamReader可以將讀如stream轉換成字元流方式,是reader和stream之間的橋樑。
InputStreamReader(位元組轉字元)
一般儲存在本地的文本時,字元形式,讀取放到展示時,需轉化為位元組形式,並執行後續操作。
OutputStreamWriter (反之)
一般地,將展示的儲存到本地時,位元組需轉化成字元形式。
在這裡貼上我瀏覽的文章
http://www.cnblogs.com/sjjsh/p/5269781.html
最後就是困擾我比較久的問題,關於位元組流字元流的使用情境。
我大致整理了下
需求 1:複製一個文字檔
1. 明確源和目的 源: InputStream Reader 目的: OutputStream Writer 2. 是否是純文字?是 源: Reader 目的: Writer 3. 具體裝置 源: 硬碟 File 目的: 硬碟 File FileReader fr = new FileReader("a.txt"); FileWriter fw = new FileWriter("b.txt");4. 是否需要額外功能 需要高效,轉換 BufferedReader br = new BufferedReader(new FileReader("a.txt")); BufferedWriter bw = new BufferedWriter(new FileWriter("b.txt"));
需求 2:讀取鍵盤錄入資訊,寫入到一個檔案中
1. 明確源和目的 源: InputStream Reader 目的: OutputStream Writer 2. 是否是純文字?是 源: Reader 目的: Writer 3. 裝置: 源: 鍵盤 System.in 目的: 硬碟 File InputStream in = System.in; FileWriter fw = new FileWriter("b.txt"); 將讀取的位元組資料轉成字串,再由字元流操作——> 4. 是否需要額外功能? 需要轉換:將位元組流轉成字元流,因為明確的源是 Reader,這樣操作文本資料更便捷。所 以,要將已有的位元組流轉成字元流。使用位元組——>字元的對象 InputStreamReader isr = InputStreamReader(System.in); FileWriter fw = new FileWriter("b.txt"); 需要高效: BufferedReader br = new BufferedReader(new InputStreamReader(System.int)); BufferedWriter bw = new BufferedWriter(new FileWriter("b.txt"));
需求 3:將一個文字檔資料顯示在控制台上
1. 明確源和目的 源: InputStream Reader 目的: OutputStream Writer 2. 是否是純文字?是 源: Reader 目的: Writer 3. 明確具體裝置: 源: 硬碟 File 目的:控制台 System.out FileReader fr = new FileReader("a.txt"); OutputStream os = new OutputStream(System.out); //PrintStream 4. 需要額外功能: 需要轉換 FileReader fr = new FileReader("a.txt"); OutputStreamWriter osw = new OutputStreamWriter(System.out); 需要高效 BufferedReader br = new BufferedReader(new FileReader("a.txt")); BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out)):
還有諸多沒說到,今後會補充,長期更新。
安卓io流再回顧