二次元碼農的成長之路(四)I/O復習1
阿新 • • 發佈:2017-10-12
應用 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