緩沖流
讀取數據量大的文件時,讀取的速度會很慢,很影響我們程序的效率
Java中提高了一套緩沖流,它的存在,可提高IO流的讀寫速度
1 字節緩沖流
字節緩沖流根據流的方向,共有2個
寫入數據到流中,字節緩沖輸出流 BufferedOutputStream
讀取流中的數據,字節緩沖輸入流 BufferedInputStream
它們的內部都包含了一個緩沖區,通過緩沖區讀寫,就可以提高了IO流的讀寫速度。
1.1 字節緩沖輸出流BufferedOutputStream
構造方法:public BufferedOutputStream(OutputStream out)
//字節輸出緩沖流 public static void method01() throws IOException{ FileOutputStream fos=new FileOutputStream("E:\\java\\demo.txt"); BufferedOutputStream bos=new BufferedOutputStream(fos); fos.write(100); bos.close(); }
1.2字節緩沖輸入流BufferedInputStream
構造方法:
public BufferedInputStream(InputStream in)
//字節輸入緩沖流 public static void method02() throws IOException{ FileInputStream fis=new FileInputStream("E:\\java\\demo.txt"); BufferedInputStream bis=new BufferedInputStream(fis); int len=0; while((len=bis.read())!=-1){ System.out.println((char)len); } bis.close(); }
使用基本的流與高效的流完成復制文件
//單個字節,字節緩沖流復制 public static void method04() throws IOException{ //明確數據源 FileInputStream fis=new FileInputStream("E:\\java\\aaa.zip"); BufferedInputStream bis=new BufferedInputStream(fis); //明確目的地 FileOutputStream fos=new FileOutputStream("E:\\java\\a\\aaa.zip"); BufferedOutputStream bos=new BufferedOutputStream(fos); //開始復制 long time1=System.currentTimeMillis(); int len=0; byte[] ch=new byte[1024]; while((len=bis.read(ch))!=-1){ bos.write(ch,0,len); } long time2=System.currentTimeMillis(); System.out.println(time2-time1); //釋放資源 bos.close(); bis.close(); }