Java I/O--字符流

      字符流以字符爲單位,根據ASCll碼錶映射字符,一次可能讀多個字節,只能處理字符類型的數據。html

       同類 InputStream 和 OutputStream 同樣,Reader 和 Writer 也是抽象類,只提供了一系列用於字符流處理的接口。它們的方法與類 InputStream 和 OutputStream 相似,只不過其中的參數換成字符或字符數組java

Reader類的方法:數組

Writer類的方法:學習

InputStreamReader 和 OutputStreamWriter 是 java.io 包中用於處理字符流的最基本的類,用來在字節流和字符流之間做爲中介:從字節輸入流讀入字節,並按編碼規範轉換爲字符;往字節輸出流寫字符時先將字符按編碼規範轉換爲字節。使用這二者進行字符處理時,在構造方法中應指定必定的平臺規範,以便把以字節方式表示的流轉換爲特定平臺上的字符表示。
 編碼

InputStreamReader(InputStream in); //缺省規範說明

//指定規範 enc

InputStreamReader(InputStream in, String enc);

OutputStreamWriter(OutputStream out); //缺省規範說明

//指定規範 enc

OutputStreamWriter(OutputStream out, String enc);

若是讀取的字符流不是來自本地時(好比網上某處與本地編碼方式不一樣的機器),那麼在構造字符輸入流時就不能簡單地使用缺省編碼規範,而應該指定一種統一的編碼規範「ISO 8859_1」,這是一種映射到 ASCCII 碼的編碼方式,可以在不一樣平臺之間正確轉換字符。code

InputStreamReader ir = new InputStreamReader(is,"8859_1");

 

  • 字符緩衝流

      爲了提升字符流處理的效率,java.io 中也提供了緩衝流BufferedReader和BufferedWriter。除了提供read()和writer()方法,還提供處理整行字符的方法:htm

一、public String readLine():BufferedReader 的方法,從輸入流中讀取一行字符,行結束標誌\n、\r或者二者一塊兒(這是根       據系統而定的)blog

二、public void newLine():BufferedWriter 的方法,向輸出流中寫入一個行結束標誌,它不是簡單地換行符\n或\r,而是系統定       義的行隔離標誌(line separator)。接口

代碼示例:get

package ioTest;

import java.io.BufferedReader;

import java.io.FileInputStream;

import java.io.FileNotFoundException;

import java.io.IOException;

import java.io.InputStreamReader;

public class FileToUnicode {

      /**

       * @param args

       */

      public static void main(String[] args) {

            try {

                  FileInputStream fis = new FileInputStream("1.txt");

                  InputStreamReader dis = new InputStreamReader(fis);

                  BufferedReader br = new BufferedReader(dis);

                  

                  String s;

                  //每次讀取一行,當下一行爲空時結束

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

                        System.out.println(s);

                  }

                  dis.close();

            } catch (FileNotFoundException e) {

                  e.printStackTrace();

            } catch (IOException e) {

                  e.printStackTrace();

            }

            

      }

}

 

參考連接:

Java IO流學習總結:http://www.cnblogs.com/oubo/archive/2012/01/06/2394638.html

相關文章
相關標籤/搜索