Java 流-缓冲流
缓冲流
1.缓冲流的作用
如果不适用缓冲流,程序读写数据是读一个数据写一个数据。效率低。缓冲流的作用是把数据先写入缓冲区,等缓冲区满了再把数据写到文件中去。效率高。
主要用到
Buffered
缓冲字节流
public class TestCopy {
public static void main(String[] args) throws IOException {
//(1)数据源
FileInputStream fis =new FileInputStream("D:\\a.txt");
//(2)目的地
FileOutputStream fos = new FileOutputStream("D:\\b.txt");
//使用缓冲流,提高效率
BufferedInputStream bis = new BufferedInputStream(fis);
BufferedOutputStream bos = new BufferedOutputStream(fos);
//(3)读数据和写数据
long start = System.currentTimeMillis();
byte[] buf = new byte[1024];
int len = 0;
/*while((len=fis.read(buf))!=-1) { //普通
fos.write(buf,0,len);
}*/
while((len=bis.read(buf))!=-1) {
bos.write(buf,0,len);
}
long end = System.currentTimeMillis();
System.out.println("文件复制共花了"+(end-start)+"毫秒");//文件太小时会显示0毫秒
//关闭
//fos.close();
//fis.close();
bos.close();
bis.close();
}
}
缓冲字符流
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
public class TestBuffered {
public static void main(String[] args) {
BufferedReader br = null;
BufferedWriter bw =null;
try {
br = new BufferedReader(new FileReader("D:\\a.txt"));
bw = new BufferedWriter(new FileWriter("D:\\b.txt"));
String line = null;
while((line=br.readLine())!=null) {
bw.write(line);
bw.newLine();//换行
bw.flush();//强制将缓冲区的内容全部写入输入流
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally {
try {
if(bw!=null) {
bw.close();
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
if(br!=null) {
bw.close();
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}