安卓io流再回顧

來源:互聯網
上載者:User

標籤: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流再回顧

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.