Java IO學習筆記(四):位元組-字元轉換流

來源:互聯網
上載者:User
文章目錄
  • OutputStreamWriter和InputStreamReader
OutputStreamWriter和InputStreamReader

在整個IO包中,實際上就是分為位元組流和字元流,但是除了這兩個流之外,還存在了一組位元組流-字元流的轉換類。

OutputStreamWriter:是Writer的子類,將輸出的字元流變為位元組流,即:將一個字元流的輸出對象變成位元組流的輸出對象。

InputStreamReader:是Reader的子類,將輸入的位元組流變為字元流,即:將一個位元組流的輸入對象變成字元流的輸入對象。

一般在操作輸入輸出內容就需要使用位元組或字元流,但是有些時候需要將字元流變成位元組流的形式,或者將位元組流變為字元流的形式,所以,就需要另外一群組轉換流的操作類。

 

看一下OutputStreamWriter的構造方法:

public OutputStreamWriter(OutputStream out)

例如,將位元組的檔案輸出資料流,以字元的形式輸出

 1 import java.io.File;
2 import java.io.FileOutputStream;
3 import java.io.IOException;
4 import java.io.OutputStreamWriter;
5 import java.io.Writer;
6
7 public class Test20 {
8 public static void main(String[] args) throws IOException {
9 File f = new File("d:" + File.separator+"test.txt");
10 Writer out=new OutputStreamWriter(new FileOutputStream(f));
11 out.write("Hello World!!!");
12 out.close();
13 }
14 }

讀得時候也可以用字元流形式讀取位元組流的對象

 

 1 import java.io.File;
2 import java.io.FileInputStream;
3 import java.io.IOException;
4 import java.io.InputStreamReader;
5 import java.io.Reader;
6
7 public class Test21 {
8 public static void main(String[] args) throws IOException {
9 File f = new File("d:" + File.separator+"test.txt");
10 Reader input=new InputStreamReader(new FileInputStream(f));
11 char[] c=new char[1024];
12 int len=input.read(c);
13 input.close();
14 System.out.println(new String(c,0,len));
15 }
16 }

以上操作只是以檔案操作為例,OutputStreamWriter中接受的類型是OutputStream,只要是位元組輸出資料流都可以以使用字元的形式操作,InputStreamReader一樣。


FileWriter和FileReader的說明

從JDK文檔中可以知道FileOutputStream是OutputStream的直接子類。FileInputStream也是InputStream的直接子類,但是在字元流檔案的兩個操作類卻有一些特殊,FileWriter並不直接是Writer的子類,而是OutputStreamWriter的子類,而FileReader也不直接是Reader的子類,而是InputStreamReader的子類,那麼從這兩個類的繼承關係就可以清楚的發現,不管是使用位元組流還是字元流實際上最終都是以位元組的形式操作輸入輸出資料流的。也就是說,傳輸或者從檔案中讀取資料的時候,檔案裡真正儲存的資料永遠是位元組。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.