InputStream、OutputStream
處理字節流的抽象類
InputStream 是字節輸入流的所有類的超類,一般我們使用它的子類,如FileInputStream等.
OutputStream是字節輸出流的所有類的超類,一般我們使用它的子類,如FileOutputStream等.
2.InputStreamReader OutputStreamWriter
處理字符流的抽象類
InputStreamReader 是字節流通向字符流的橋樑,它將字節流轉換爲字符流.
OutputStreamWriter是字符流通向字節流的橋樑,它將字符流轉換爲字節流.
3.BufferedReader BufferedWriter
BufferedReader 由Reader類擴展而來,提供通用的緩衝方式文本讀取,readLine讀取一個文本行,
從字符輸入流中讀取文本,緩衝各個字符,從而提供字符、數組和行的高效讀取。
BufferedWriter 由Writer 類擴展而來,提供通用的緩衝方式文本寫入, newLine使用平臺自己的行分隔符,
將文本寫入字符輸出流,緩衝各個字符,從而提供單個字符、數組和字符串的高效寫入。
InputStream能從來源處讀取一個一個byte,
所以它是最低級的,
例:
- import <a href="http://lib.csdn.net/base/javase" class='replace_word' title="Java SE知識庫" target='_blank' style='color:#df3434; font-weight:bold;'>Java</a>.io.*;
- public class Main {
- public static void main(String[] args) {
- try {
- FileInputStream fis=new FileInputStream("d://desktop//test.txt");
- int i;
- try {
- while((i=fis.read()) != -1){
- System.out.println(i);
- }
- /*假設test.txt檔裡頭只有一個文字 "陳" ,且其編碼為 utf8
- * 輸出
- * 233
- 153
- 179
- */
- } catch (IOException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- } catch (FileNotFoundException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- }
- }
InputStreamReader
InputStreamReader封裝了InputStream在裏頭,
它以較高級的方式,一次讀取一個一個字符,
下例是假設有一個編碼爲utf8的文檔,
其內容只有一箇中文字 "陳"
- import java.io.*;
- public class Main {
- public static void main(String[] args) throws FileNotFoundException, UnsupportedEncodingException {
- FileInputStream fis=new FileInputStream("d://desktop//test.txt");
- try {
- InputStreamReader isr=new InputStreamReader(fis,"utf8");
- int i;
- while((i=isr.read()) != -1){
- System.out.println((char)i); //輸出 陳
- }
- } catch (Exception e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- }
- }
BufferedReader
BufferedReader則是比InputStreamReader更高級,
它封裝了StreamReader類,
一次讀取取一行的字符
- import java.io.*;
- public class Main {
- public static void main(String[] args) throws FileNotFoundException, UnsupportedEncodingException {
- FileInputStream fis=new FileInputStream("d://desktop//test.txt");
- try {
- InputStreamReader isr=new InputStreamReader(fis,"utf8");
- BufferedReader br=new BufferedReader(isr);
- String line;
- while((line=br.readLine()) != null){
- System.out.println(line);
- }
- } catch (Exception e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- }
- }