我們使用字節(jié)流對(duì)象輸入輸出時(shí)佛玄,不是java程序直接與硬盤“交流”的,java沒有這么大的權(quán)限咬最,java程序在jvm中運(yùn)行翎嫡,jvm與操作系統(tǒng)相關(guān)聯(lián),操作系統(tǒng)再與硬盤“交流”永乌,當(dāng)j我們想要訪問硬盤中的數(shù)據(jù)的時(shí)候惑申,為了避免與硬盤的交互次數(shù),java為我們提供了緩沖區(qū)翅雏。
當(dāng)我們調(diào)用BufferedInputStream的讀取數(shù)據(jù)的方法時(shí)圈驼,會(huì)從它底層維護(hù)的數(shù)組讀取數(shù)據(jù)。
當(dāng)我們調(diào)用BufferedOutputStream寫數(shù)據(jù)的時(shí)候望几,會(huì)先將數(shù)據(jù)往數(shù)組里寫绩脆,當(dāng)數(shù)組里存滿了之后再手動(dòng)調(diào)用刷新方法,才能將數(shù)組里的數(shù)據(jù)寫到硬盤中去橄抹。
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
public class IoDemo {
public static void main(String[] args) throws IOException {
FileInputStream fi = new FileInputStream("e:/lishuai.txt");
BufferedInputStream b1 = new BufferedInputStream(fi);
FileOutputStream fo = new FileOutputStream("f:/lishuai.txt");
BufferedOutputStream b2 = new BufferedOutputStream(fo);
methord(fi, fo);
}
private static void methord(FileInputStream fi, FileOutputStream fo) throws IOException {
// TODO Auto-generated method stub
int len = 0;
byte[] b = new byte[1024];
while ((len = fi.read(b)) != -1) {
fo.write(b);
}
b1.close();
b2.close();
}
}