package cn.zhozuohou; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; /* * 一、緩沖流? * 【緩沖流的目的就是提高讀寫效率。】 * * 二、字節輸入輸出緩沖流! 1.字節輸入緩沖流! BufferedInputStream 讀! read() 復制!文件到程序! BufferedInputStream a1=new BufferedInputStream(new FileInputStream(文件)); 2.字節輸出緩沖流! BufferedOutputStream 寫! write() 拷貝!程序到文件! FileOutputStream a1=new FileOutputStream("文件); 3.字節緩沖流拷貝文件,效率非常高! 1.先讀后寫 BufferedInputStream a1=new BufferedInputStream (new FileInputStream("D:\\XMind\\1.dat")); BufferedOutputStream a2=new BufferedOutputStream(new FileOutputStream("d:\\game\\1.dat")); 三、字符輸入輸出緩沖流! 1.字符輸入緩沖流。讀!read BufferedReader; BufferedReader a1=new BufferedReader(new FileReader(文件名)); 字符類型 String char 2.字符輸出緩沖流! 寫! write BufferedWrite; FileWriter a1=new FileWriter(文件名); 3.字符緩沖流拷貝文件! BufferedReader a1=new BufferedReader(new FileReader("d:\\game\\abc.txt")); BufferedWriter a2=new BufferedWriter(new FileWriter("d:\\day13\\abc.txt")); * * */ public class 緩沖流 { public static void main(String[] args) throws IOException { bufferedInputStream(); //1.字節輸入緩沖流 讀! 慢 快! bufferedOutputStream(); //2.字節輸出緩沖流 // copy01(); //3.字節緩沖流拷貝文件! 速度快! // copy02(); //4.普通字節流拷貝文件! bufferedReader(); //5.字符輸入緩沖流! bufferedWriter(); //6.字符輸出緩沖流! copy03(); //7.字符緩沖流流復制文件! } //7.字符緩沖流流復制文件! private static void copy03() throws IOException{ BufferedReader a1=new BufferedReader(new FileReader("d:\\game\\aa.txt")); BufferedWriter a2=new BufferedWriter(new FileWriter("C:\\aa.txt")); int len=0; char[]b=new char[1024*10000]; while ((len=a1.read(b))!=-1) { a2.write(b,0,len); } a1.close(); a2.close(); } //6.字符輸出緩沖流! private static void bufferedWriter() throws IOException{ BufferedWriter a1=new BufferedWriter(new FileWriter("d:\\game\\aaa.txt")); a1.write("你好"); a1.flush(); String b="zhou xu feng"; a1.write(b,0,8); a1.flush(); a1.close(); } //5.字符輸入緩沖流! private static void bufferedReader() throws IOException { int num=0; BufferedReader a1=new BufferedReader(new FileReader("d:\\game\\aa.txt")); String line; //緩沖流特有方法 讀取文本單行! byte []b=new byte[1024*10]; //快速讀取! while ((line=a1.readLine())!=null) { //集合非空! num++; System.out.println("第"+num+"行的內容 "+line); } a1.close(); } //4.普通字節流拷貝文件! private static void copy02() throws IOException{ long t1=System.currentTimeMillis(); FileInputStream a1=new FileInputStream("E:\\代碼\\27\\視屏\\1.mp4"); FileOutputStream a2=new FileOutputStream("d:\\1.mp4"); int len=0; byte []b=new byte[1024*10000]; while ((len=a1.read(b))!=-1) { a2.write(b,0,len); } a1.close(); a2.close(); long t2=System.currentTimeMillis(); System.out.println("利用字節流復制文件的時間!"+(t2-t1)+"毫秒"); } //3.字節緩沖流拷貝文件! 速度快! private static void copy01() throws IOException{ long t1=System.currentTimeMillis(); BufferedInputStream a1=new BufferedInputStream(new FileInputStream("E:\\代碼位置\\27\\視屏\\1.mp4")); BufferedOutputStream a2=new BufferedOutputStream(new FileOutputStream("d:\\1.mp4")); int len=0; byte []b=new byte[1024*10000]; while ((len=a1.read(b))!=-1) { a2.write(b,0,len); } a1.close(); a2.close(); long t2=System.currentTimeMillis(); System.out.println("利用字節緩沖流復制文件的時間!"+(t2-t1)+"毫秒"); } //2.字節輸出緩沖流 private static void bufferedOutputStream() throws IOException { BufferedOutputStream a1=new BufferedOutputStream(new FileOutputStream("d:\\game\\aa.txt")); a1.write(100); //添加字符串! byte b[]="zhou xu feng".getBytes(); a1.write(b,0,12); a1.close(); } //1. 字節輸入緩沖流 讀! 慢 快! private static void bufferedInputStream() throws IOException{ BufferedInputStream a1=new BufferedInputStream(new FileInputStream("d:\\game\\aa.txt")); /*1.快速讀取方式 int len=0; byte[] b=new byte[1024*10]; while ((len=a1.read(b))!=-1) { System.out.println(new String(b,0,len)); }*/ //普通方式! int len=0; while ((len=a1.read())!=-1) { System.out.print((char)len+" "); //直接輸出len 是一堆數字 通過(char)將他們轉換成字符 } a1.close(); System.out.println("==================="); } }