位元組緩衝流(處理流)
阿新 • • 發佈:2021-01-26
BufferedInputStream 內部有一個緩衝區陣列
當從流中讀取或跳過位元組時,內部緩衝區將根據需要從所包含的輸入流中重新填充,一次有多個位元組
BufferedOutputStream 提供輸出效率
//建立一個輸出緩衝流 此處採用匿名物件建立一個OutputStream物件作為緩衝流的引數
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("buff.txt"));// 預設的緩衝區大小8192
bos.write("hello" .getBytes());
bos.write("world".getBytes());//如果在寫資料的時候 如果緩衝區沒有寫滿,此時我們就必須強制重新整理緩衝區 否則緩衝區的資料時不能寫出到檔案的
bos.flush();//強制重新整理緩衝區
bos.close();// 在執行close之前會限執行flush
實現圖片複製
public static void main(String[] args) throws IOException {
// 建立一個輸入緩衝流
InputStream in = new FileInputStream("d:\\IO\\os\\mn.jpg" );
BufferedInputStream bis = new BufferedInputStream(in);
//建立一個輸出緩衝流 此處採用匿名物件建立一個OutputStream物件作為緩衝流的引數
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("buff.jpg"));// 預設的緩衝區大小8192
byte[] buff = new byte[1024];
int len;
long begin= System.currentTimeMillis ();
while((len = bis.read(buff)) != -1){
bos.write(buff,0,len);
}
long end = System.currentTimeMillis();
System.out.println("複製檔案完成,共耗時:" + (end - begin) + "毫秒");//1
bos.close();
bis.close();
}
使用緩衝流實現複製視訊
public class CopyVido {
public static void main(String[] args) throws IOException {
long begin = System.currentTimeMillis();
//byteArrayCopy();//3306
buffStreamCopy();//1167
long end = System.currentTimeMillis();
System.out.println(end - begin);
}
// 每次讀取一個位元組陣列
public static void byteArrayCopy() throws IOException {
FileInputStream fis = new FileInputStream("d:\\IO\\os\\Java高階- 23.avi");
FileOutputStream fos = new FileOutputStream("java23.avi");
byte[] buff = new byte[1024 * 1024] ;
int len ;
while((len = fis.read(buff)) != -1){
fos.write(buff,0,len);
}
fos.close();
fis.close();
}
// 使用位元組緩衝流來實現
public static void buffStreamCopy() throws IOException {
BufferedInputStream bis = new BufferedInputStream(new FileInputStream("d:\\IO\\os\\Java高階- 23.avi"));
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("java2323.avi"));
byte[] buff = new byte[1024 * 1024] ;
int len ;
while((len = bis.read(buff)) != -1){
bos.write(buff,0,len);
}
bis.close();
bos.close();
}