package com.laien.io; import java.io.BufferedInputStream; import java.io.FileInputStream; import java.io.InputStream; /** * BufferedInputStream预先读入一整段原始输入流数据至缓冲区中, * 而外界对BufferedInputStream的读取操作实际上是在缓冲区上进行, * 如果读取的数据超过了缓冲区的范围, * 那么BufferedInputStream负责重新从原始输入流中载入下一截数据填充缓冲区, * 然后外界继续通过缓冲区进行数据读取。这样的设计的好处是:避免了大量的磁盘IO, * 因为原始的InputStream类实现的read是即时读取的, * 即每一次读取都会是一次磁盘IO操作(哪怕只读取了1个字节的数据),可想而知,如果数据量巨大, * 这样的磁盘消耗非常可怕。而通过缓冲区的实现,读取可以读取缓冲区中的内容, * 当读取超过缓冲区的内容后再进行一次磁盘IO, * 载入一段数据填充缓冲,那么下一次读取一般情况下就直接可以从缓冲区读取,减少了磁盘IO * @author Administrator * */ public class BufferedInputStreamTest { public static void main(String[] args) throws Exception { InputStream is = new FileInputStream("D:/out.txt"); //装饰者模式 BufferedInputStream bis = new BufferedInputStream(is); byte[] buffer = new byte[2]; int length = 0; //这里是从缓冲区读取的数据 while( (length = bis.read(buffer, 0, 2)) != -1) { String str = new String(buffer, 0, length); System.out.println(str); } bis.close(); } }
相关推荐
Java IO中的BufferedInputStream是Java I/O流处理中非常重要的一部分,它属于过滤输入流(FilterInputStream)的一个子类。BufferedInputStream的主要目的是提高输入流的读取效率,通过内部维护一个缓冲区来批量处理...
测试结果显示,相比于直接使用InputStream进行读取,BufferedInputStream可以减少磁盘IO次数,提高数据读写的效率。 不过,值得注意的是,性能提升的明显程度与数据量的大小有关。在数据量较小时,性能提升的效果...
import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import ...
Java IO 中的 File 类、输入流和输出流是处理输入输出操作的基本类和方法,BufferedOutputStream、BufferedInputStream、DataOutputStream 和 DataInputStream 等过滤流提供了带缓冲的读写和基本数据类型的读写功能...
例如,BufferedInputStream和BufferedOutputStream可以在原始流之上添加缓冲功能,提高读写效率;GZIPOutputStream和GZIPInputStream可以实现数据的GZIP压缩和解压。 在Java IO框架图中,我们可以看到这些类和接口...
此外,BufferedInputStream和BufferedOutputStream等缓冲流类能提高I/O性能,而FilterInputStream和FilterOutputStream则允许自定义流过滤。 3. **转换操作**:IOUtils类包含了一系列静态方法,用于读取流到字符串...
Java IO包是Java标准库中的核心组件之一,主要用于处理输入和输出操作。这个包包含了大量类和接口,它们提供了各种输入输出流、字符编码、数据转换以及文件操作等功能。Java IO的设计采用了Decorator模式,使得在不...
了解 Java 的 IO 类,IO 流是 Java 中的基础概念之一。Java 的 IO 类分为两大类:Input/Output 和 Reader/Writer。Input/Output 流是字节流, Reader/Writer 是字符流。Input/Output 流是 Java 中的基础流,所有的...
4. **线程安全的I/O操作**:对于多线程环境,Apache Commons IO提供了线程安全的I/O工具,比如`BufferedInputStream`和`BufferedOutputStream`的线程安全版本,确保并发操作的正确性。 5. **文件观察和监听**:`...
- FilterInputStream和FilterOutputStream是过滤流,它们可以附加在其他流之上,增加额外的功能,比如校验和计算、数据压缩等。 6. 文件操作: - File类是Java处理文件的基础,提供了创建、删除、重命名文件以及...
在Java IO库中,存在一对“装饰器”流,即BufferedInputStream和BufferedReader。它们提供缓冲功能,可以显著提高数据读写的效率。例如,使用BufferedReader.read()方法可以一次性读取一行文本,而不是一个字符一个...
在输入流中,FilterInputStream类提供了一种装饰者模式,可以添加额外的功能到已有的输入流上,如BufferedInputStream可以增加缓冲功能,提高读取性能。在输出流中,也有类似的FilterOutputStream类,例如...
在压缩包中,除了`commons-io-2.4.jar`本身,还有其他URL文件,可能是提供额外资源的链接,如"去脚本之家看看.url"可能指向一个编程资源网站,"领取天猫淘宝内部优惠券.url"可能是促销信息,而"服务器软件.url"可能...
2. 流操作:提供了许多对输入/输出流进行读写、转换和操作的工具类,如`BufferedInputStream` 和 `BufferedOutputStream`,以及处理字符编码的`CharStreams`。此外,还有用于读取和写入流的便捷方法,如`IOUtils....
### Java IO详解 #### 1. 什么是IO 在计算机科学中,IO(Input/Output,输入/输出)指的是程序与外部系统之间进行数据交换的过程。在Java中,IO操作主要通过`java.io`包来实现,这个包包含了用于文件读写、标准...
2、常用21个IO流:FileWriter、FileReader、CharArrayReader、CharArrayWriter、CharSequence、OutputStreamWriter、FileOutputStream、InputStreamReader、PrintWriter、BufferedReader、InputStream、...
处理流则是对已有流的功能进行增强或转换,如BufferedInputStream/BufferedReader。 三、常用IO流类 1. FileInputStream和FileOutputStream:分别用于读取和写入文件的字节流。 2. FileReader和FileWriter:用于...
Java IO的基本概念之一是流,它是一种数据传输的方式。Java中的流被抽象成一系列连续的数据元素,这些数据元素可以是字节或字符。流分为两种基本类型:输入流和输出流。输入流是从外部源读取数据到程序,而输出流则...
为了提高IO操作的效率,Java提供了缓冲流,如`BufferedInputStream`和`BufferedOutputStream`,以及`BufferedReader`和`BufferedWriter`。这些类在内部维护了一个缓冲区,可以减少实际的物理I/O次数。 五、转换流...
Java IO系统的设计原则之一是高度模块化和可扩展性,通过抽象出一系列接口来支持各种不同类型的I/O操作。例如,`InputStream`和`OutputStream`接口分别用于读取和写入数据,它们构成了Java IO系统的核心基础。此外,...