Java IO(3)

來源:互聯網
上載者:User

標籤:style   blog   http   color   java   使用   os   io   

字元流相關

字元流基本上可以類比位元組流 只不過是將位元組流的byte 換為char。

最根本的兩個類是Reader以及Writer

Reader的子類有:
BufferedReader, CharArrayReader, FilterReader, InputStreamReader, PipedReader, StringReader

Writer的子類有:

BufferedWriter, CharArrayWriter, FilterWriter, OutputStreamWriter, PipedWriter, PrintWriter, StringWriter

特殊的類:

InputStreamReader以及OutputStreamWriter 通過這兩個類可以實現位元組流與字元流之間的轉化,前提是本身讀入的是字串。

將位元組流轉化為字元流

public InputStreamReader(InputStream in)

利用指定的編碼格式cs 將位元組流轉化為字元流

InputStreamReader(InputStream in, Charset cs)

OutputStreamWriter的使用也是類似的方式

例子:


package com.characterStream.bufferWriter;


import java.io.*;


public class streamTest {


public static void main(String[] args) throws Exception {


FileOutputStream fos=new FileOutputStream("F:\\filetest.txt");


//這裡將位元組流轉化為字元流


OutputStreamWriter osw=new OutputStreamWriter(fos);


//這裡是位元組流的過濾流


BufferedWriter bw=new BufferedWriter(osw);


bw.write("the test of BufferedStream");


bw.write(‘\n‘);


bw.write("test is finished");


//用字元流的時候這裡的close就變得更加關鍵了


//只有close的時候 才會將bufferedwriter中的內容寫入到檔案中


//否則的話 檔案中是沒有什麼實際內容的


bw.close();


//再通過字元流從外部讀入


FileReader fr=new FileReader("F:\\filetest.txt");


BufferedReader br=new BufferedReader(fr);


//這個是每次讀入一行資料


String str;


while((str=br.readLine())!=null){


System.out.println(str);


}


br.close();


//將標準輸入裝置封裝成為位元組流 每次在控制體上輸入的資訊又會再次列印出來


InputStreamReader isr=new InputStreamReader(System.in);


BufferedReader bfr=new BufferedReader(isr);


//注意這種輸入資料流的通用的格式 讀到最後一行的話 就會出來一個 null 表示已經//到了最後一行


while((str=bfr.readLine())!=null){


System.out.println(str);


}


bfr.close();


}


}

 

注意字元流中由於緩衝區的使用,只有在close的時候才會將字元流中的內容讀進來或者讀出去,加上close是非常關鍵的。

關於封裝模式在IO中的應用

之前也看到了具體的IO過濾流的一些典型的寫法 比如:

DataOutputStream dos=new DataOutputStream(new BufferedOutputStream(new FileOutputStream("F:\\filetest.txt")));

但是為什麼能這樣寫,就是說為什麼能寫成這麼一種嵌套的模式,這就要涉及到Java的設計模式,這裡面應用到的就是封裝模式具體見:

http://www.cnblogs.com/Goden/p/3901664.html

相關文章

聯繫我們

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