缓冲流

简介: 缓冲流

概述

什么是缓冲流

缓冲流,也叫 高效流,是对 4个 基本的 File *** 流的增强

所以也是 4个流,按照数据类型分类: 字节缓冲流: BufferedInputStream , BufferedOutputStream,字符缓冲流: BufferedReader , BufferedWriter

基本原理

缓冲流的基本原理,是在创建流对象时,会创建一个内置的默认大小的缓冲区数组,通过缓冲区读写,减少系统 IO 次数,从而提高读写的效率。

字节缓冲流

构造方法

  • public BufferedInputStream(InputStream in) :创建一个 新的缓冲输入流。
  • public BufferedOutputStream(OutputStream out): 创建一个新的缓冲输出流。
//创建字节缓冲输入流
BufferedInputStream bis = new BufferedInputStream(new FileInputStream("xhh.txt"));
//创建字节缓冲输出流
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("xhh.txt"));

效率测试

直接使用 FileInputStream 与 FileOutStream 复制文件

public static void main(String[] args) throws Exception {
    long start = System.currentTimeMillis();
    FileInputStream fis  = new FileInputStream("D:/apache-echarts-4.6.0-incubating-src.zip");
    FileOutputStream fos = new FileOutputStream("newApache.zip");
    int len;
    byte[] b = new byte[1024];
    while ((len = fis.read(b)) != -1){
        fos.write(b);
    }
    fis.close();
    fos.close();
    long end = System.currentTimeMillis();
    System.out.println("时间:"+(end-start));
}
// 49

使用缓冲流复制文件

public static void main(String[] args) throws Exception {
    long start = System.currentTimeMillis();
    BufferedInputStream bis  = new BufferedInputStream(new FileInputStream("D:/apache-echarts-4.6.0-incubating-src.zip"));
    BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("newApache.zip"));
    int len;
    byte[] b = new byte[1024];
    while ((len = bis.read(b)) != -1){
        bos.write(b);
    }
    bis.close();
    bos.close();
    long end = System.currentTimeMillis();
    System.out.println("时间:"+(end-start));
}
// 25

字符缓冲流

构造方法

  • public BufferedReader(Reader in)
  • public BufferedWriter(Writer out)
public static void main(String[] args) throws Exception {
    BufferedReader br = new BufferedReader(new FileReader("xhh.txt"));
    BufferedWriter bw = new BufferedWriter(new FileWriter("xhh.txt"));
}

特有方法

  • BufferedReader
  • public String readLine():读一行文字
  • BufferedWriter
  • public void newLine() :写一行行分隔符,由系统属性定义符号
public static void main(String[] args) throws Exception {
    BufferedReader br = new BufferedReader(new FileReader("xhh.txt"));
    String line = null;
    while ((line = br.readLine()) != null) {
        System.out.println(line);
    }
    br.close();
}

public static void main(String[] args) throws Exception {
    BufferedWriter br = new BufferedWriter(new FileWriter("out.txt"));
    br.write("小灰");
    br.newLine();
    br.write("灰");
    br.newLine();
    br.close();
}
相关文章
|
27天前
字节流和字符流
字节流和字符流
11 0
|
2月前
day17-缓冲流&转换流&序列化流&打印流&Properties(三)
day17-缓冲流&转换流&序列化流&打印流&Properties
44 1
|
2月前
|
存储 自然语言处理 Java
day17-缓冲流&转换流&序列化流&打印流&Properties(二)
day17-缓冲流&转换流&序列化流&打印流&Properties
48 1
|
11月前
|
存储 Java
字节缓冲流
字节缓冲流
49 0
|
2月前
|
存储
day17-缓冲流&转换流&序列化流&打印流&Properties(一)
day17-缓冲流&转换流&序列化流&打印流&Properties
56 0
|
2月前
|
移动开发 Java Linux
IO流:字节输出流FileOutputStream的超详细用法
IO流:字节输出流FileOutputStream的超详细用法
|
8月前
|
存储 Java
IO流之 字节流 & 字符流
大多数应用程序都需要实现与设备之间的数据传输,例如键盘可以输入数据,显示器可以显示程序的运行结果等。在Java中,将这种通过不同输入输出设备(键盘,内存,显示器,网络等)之间的数据传输抽象的表述为“流”,程序允许通过流的方式与输入输出设备进行数据传输。Java中的“流”都位于Java.io包中,称之为IO(输入输出)流。IO流即InputOutput的缩写。一切文件数据在存储时,都是以二进制数字的形式保存,都一个一个的字节,那么传输时一样如此。所以,字节流可以传输任意文件数据。httpshttps。...
96 0
|
11月前
打印流
打印流
28 1
|
11月前
|
存储 Windows
转换流
转换流
37 0
|
11月前
|
存储 Java
字符流
字符流
25 0