BufferIO

FileInputStream有一個致命的缺陷,那就是每讀取一個字節就訪問硬盤一次,這樣對硬盤傷害很大,因此提出了緩衝區的輸入輸出流,將硬盤裏的數據緩衝到緩衝區內,這樣就避免在讀寫玩緩衝區內的數據之前訪問硬盤,卡賓下面一個小例子:
import java.io.*;

public class TestBufferStream1 {
	public static void main(String[] args) {
		try{
		BufferedInputStream	brs = new BufferedInputStream(new FileInputStream ("d:/java/HelloWorld.java"));		
			System.out.println(brs.read());		//讀取一個字符
			int c=0;	
			brs.mark(10);				//標記,不執行任何操作,看JDK文檔
			for(int i=0;i<10&&((c=brs.read())!=-1);i++){				
					System.out.print(c + " ");				
			}
			brs.reset();		//還原到標記的地方繼續讀
			System.out.println();
			for(int i=0;i<10&&((c=brs.read())!=-1);i++){				
					System.out.print((char)c + " ");		//將C轉成字符形式讀入
			}
			brs.close();	
		}catch(IOException e){
			e.printStackTrace();
		}
	}
}


import java.io.*;
public class TestBufferStream2 {
  public static void main(String[] args) {
    try {
      BufferedWriter bw = new BufferedWriter(new FileWriter("d:\\share\\java\\dat2.txt"));
      BufferedReader br = new BufferedReader(
             new FileReader("d:\\share\\java\\dat2.txt"));
      String s = null;
      for(int i=1;i<=100;i++){
        s = String.valueOf(Math.random());
        bw.write(s);
        bw.newLine();
      }
      bw.flush();<span style="white-space:pre">			</span>//刷新該流緩衝,在關閉之前都要刷新,
      while((s=br.readLine())!=null){<span style="white-space:pre">					</span>//這裏需要注意,BufferedWriter不在是讀取一個字節,而是讀取一個字符,因此s爲字符
        System.out.println(s);
      }
      bw.close(); 
      br.close();
    } catch (IOException e) { e.printStackTrace();}
  }
}


發佈了76 篇原創文章 · 獲贊 6 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章