1. 程式人生 > >二次元碼農的成長之路(四)I/O復習1

二次元碼農的成長之路(四)I/O復習1

應用 exceptio row har 字節數 對象 i/o rgs clas

一、什麽是流

它代表了有能力產出數據的對象或者有能力接受數據的對象

java類庫的I/O由輸入輸出兩部分組成

二、 inputStream InputStreamReader Read的關系

1、inputStream類型

作用:是用來表示那些不同數據源產出的數據輸入的類

數據源可以是字節數組 String 對象 文件 管道 internet等

2Reader與inputStream區別

Reader與inputStream最大的區別就是Reader 面向字符 inputStream面向字節

如果要從字節轉字符就得有個適配器,所謂適配器舉個例子 你去美國旅遊你帶的手機充電器是220V 而美國的標準電壓是110V你要在你的充電器上面套一個東西來適應美國電壓 這就是適配器

設計模式中有適配器模式 而InputStreamReader就是這個適配器也應用了適配器模式

2 InputStreamReader與StringBuffer讀取文件內容區別

import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;

public class Review {
	static String file = "C:\\practice\\think in java\\src\\2121.txt";
	
	public static void main(String[] args) throws IOException {
		String s;
		StringBuffer sb=new StringBuffer();
		
		File f =new File(file);
		try {
			BufferedReader br =new BufferedReader(new FileReader(file));
			while((s=br.readLine())!=null)
				sb.append(s);
			System.out.println(sb.toString());
			
		} catch (FileNotFoundException e) {
			// TODO 自動生成された catch ブロック
			e.printStackTrace();
		}
		
	}

}

這是BufferedReader去取文件

public class Review2 {
	static String file = "C:\\practice\\think in java\\src\\2121.txt";
	public static void main(String[] args) throws FileNotFoundException {
		
		FileInputStream is=new FileInputStream(file);
		InputStreamReader ir=new InputStreamReader(is);
		int c;
		try {
			while((c=ir.read())!=-1){
				System.out.print((char)c);
			}
		} catch (IOException e) {
			// TODO 自動生成された catch ブロック
			e.printStackTrace();
		}

	}

}

這是InputStreamReader的

可以看出來兩者代碼是有區別的

本質上是 InputStreamReader是直接讀取內存一個字符一個字符讀取

BufferedReader是從緩沖區讀取

二次元碼農的成長之路(四)I/O復習1