Java缓冲输出流是一种特殊的输出流,它可以将数据缓冲到内存中,然后一次性将数据写入到目标文件中。它可以大大提高文件的写入速度,因为它不必每次都将数据写入文件,而是将数据缓存在内存中,然后一次性将所有的数据写入文件。
Java缓冲输出流使用了装饰者设计模式,它可以包装一个已有的输出流,并添加额外的功能。例如,BufferedOutputStream可以包装一个FileOutputStream对象,并添加缓存功能。
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("test.txt"));
Java缓冲输出流还可以使用flush()方法来强制将缓存中的数据立即写入文件。如果不使用flush()方法,那么在close()方法执行之前,所有的数据都会保留在系统缓存中。
bos.flush(); // 刷新此输出流并强制将所有缓存的输出字节立即写出 bos.close(); // 关闭此输出流并释放与此流有关的所有系统资源
Java 的 BufferedOutputStream 类还可以使用 write(byte[] b, int off, int len) 方法来一次性将多个字节数组写入到目标文件中。这样做可以大大减少对文件的读/写请求,因此也能够明显地加快文件整体的读/写速度。
BufferedInputStream通过缓冲数据向输入流添加功能。
它维护一个内部缓冲区以存储从底层输入流读取的字节。
我们创建缓冲区输入流如下:
String srcFile =“test.txt";BufferedInputStream bis = new BufferedInputStream(new FileInputStream(srcFile));
以下代码显示如何使用BufferedInputStream从文件读取。
import java.io.BufferedInputStream; import java.io.FileInputStream; public class Main { public static void main(String[] args) { String srcFile = "test.txt"; try (BufferedInputStream bis = new BufferedInputStream(new FileInputStream( srcFile))) { // Read one byte at a time and display it byte byteData; while ((byteData = (byte) bis.read()) != -1) { System.out.print((char) byteData); } } catch (Exception e2) { e2.printStackTrace(); } } }
上面的代码生成以下结果。
JavaFX教程 -JavaFX分页分页控件用于浏览多个页面。 我们典型地使用对网页的分页控制,例如博客。 在博客页面的底部,我们可以看...
Java脚本教程 -Java脚本NashornNashorn是JVM上的ECMAScript 5.1规范的运行时实现。Nashorn是100%符合ECMAScript 5.1。使用Nasho...
Java脚本教程 - Java脚本语言使用包全局对象Nashorn将所有Java包都定义为名为 Packages 的全局变量的属性。 例如, java.lang 和...
Java脚本教程 -Java脚本运算符Nashorn的运算符列表:OperatorSyntax ++++i i++----i i--deletedelete propvoidvoid exprtypeofty...