缓冲流,也叫高效流,是对4个基本的 FiileXxx 流的增强,所以也是4个流,按照数据类型分类:
public BufferedInputStream(InputStream in):
创建一个新的缓冲输入流。
public BufferedOutputStream(OutputStream out):
创建一个新的缓冲输出流。
- import java.io.*;
-
- public class Test {
- public static void main(String[] args) throws IOException {
- // 创建字节缓冲输入流
- BufferedInputStream bis =new BufferedInputStream(new FileInputStream("bis.txt"));
- // 创建字节缓冲输出流
- BufferedOutputStream bos =new BufferedOutputStream(new FileOutputStream("bos.txt"));
- }
- }
查询API,缓冲流读写方法与基本的流是一致的,我们通过复制大文件(375MB),测试它的效率。
- import java.io.*;
-
- public class Test {
- public static void main(String[] args) throws IOException {
- // 记录开始时间
- long start =System.currentTimeMillis();
- // 创建流对象
- try(
- FileInputStream fis = new FileInputStream("jdk9.exe");
- FileOutputStream fos = new FileOutputStream("copy.exe");
- ){
- // 便写数缩
- int b;
- while((b =fis.read())!=-1) {
- fos.write(b);
- }
- }catch(IOException e){
- e.printStackTrace();
- }
- // 记录结束时间
- long end =System.currentTimeMillis();
- System.out.println("普通流复制时间:"+(end-start)+"毫秒");
- }
- }
创建一个新的缓冲输入流。
创建一个新的缓冲输出流。
构造举例,代码如下:
- // 创建字符缓冲输入流
- BufferedReader br = new BufferedReader(new FileReader("br.txt"));
- // 创建字符缓冲输出流
- BufferedWriter bw=new BufferedWriter(new FileWriter("bw.txt"));
字符缓冲流的基本方法与普通字符流调用方式一致,不再阐述,我们来看它们具备的特有方法。
读一行文字。
写一行行分隔符(即换行符),由系统属性定义符号。
- import java.io.*;
-
- public class BufferedReaderDemo {
- public static void main(String[] args) throws IOException {
- // 创建流对象
- BufferedReader br = new BufferedReader(new FileReader("out.txt"));
- // 定义字符串,保存读取的一行文字
- String line =null;
- // 循环读取,读取到最后返回null
- while((line= br.readLine())!=null) {
- System.out.print(line);
- System.out.println("_____-");}
- // 释放资源
- br.close();
- }
- }
- import java.io.*;
-
- public class BufferedWriterDemo {
- public static void main(String[] args) throws IOException {
- // 创建流对象
- BufferedWriter bw = new BufferedWriter(new FileWriter("out.txt"));
- // 写出数据
- bw.write("我是");
- // 写出换行
- bw.newLine();
- bw.write("程序");
- bw.newLine();
- bw.write("员");
- bw.newLine();
- // 释放资源
- bw.close();
- }
- }
- //使用缓冲流读new.txt的内容并输出
- BufferedReader fr = new BufferedReader(new FileReader("new.txt"));
- BufferedWriter fw = new BufferedWriter(new FileWriter("ccc.txt"));
- String line = null;
- while ((line = fr.readLine())!=null)
- System.out.println(line);