二級Java考試輔導教程:4.7字符流的處理[2]

字號:

獲取當前編碼方式
    public String getEncoding();
    關閉流
    public void close() throws IOException;
    4.7.3 BufferedReader和BufferedWriter
    生成流對象
    public BufferedReader(Reader in); //使用缺省的緩沖區(qū)大小
    public BufferedReader(Reader in, int sz); //sz為緩沖區(qū)的大小
    public BufferedWriter(Writer out);
    public BufferedWriter(Writer out, int sz);
    讀入/寫出字符
    除了Reader和Writer中提供的基本的讀寫方法外,增加對整行字符的處理。
    public String readLine() throws IOException; //讀一行字符
    public void newLine() throws IOException; //寫一行字符來源:www.examda.com
    【例4-4】
    import java.io.*;
    public class NumberInput{
    public static void main(String args[]){
     try{
     InputStreamReader ir;
     BufferedReader in;
     ir=new InputStreamReader(System.in);
     //從鍵盤接收了一個字符串的輸入,并創(chuàng)建了一個字符輸入流的對象
     in=new BufferedReader(ir);
     String s=in.readLine();
     //從輸入流in中讀入一行,并將讀取的值賦值給字符串變量s
     System.out.println("Input value is: "+s);
     int i = Integer.parseInt(s);//轉換成int型
     i*=2;
     System.out.println("Input value changed after doubled: "+i);
     }catch(IOException e)
     {System.out.println(e);}
    }
    }
     運行結果
    D:\>java NumberInput
    123
    Input value is 123
    Input value changed after doubled: 246
    注意:在讀取字符流時,如果不是來自于本地的,比如說來自于網絡上某處的與本地編碼方式不同的機器,那么我們在構造輸入流時就不能簡單地使用本地缺省的編碼方式,否則讀出的字符就不正確;為了正確地讀出異種機上的字符,我們應該使用下述方式構造輸入流對象:
     ir = new InputStreamReader(is, "8859_1");
    采用ISO 8859_1編碼方式,這是一種映射到ASCII碼的編碼方式,可以在不同平臺之間正確轉換字符。