`

io之BufferedInputStream

    博客分类:
  • java
阅读更多
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 IO中的BufferedInputStream是Java I/O流处理中非常重要的一部分,它属于过滤输入流(FilterInputStream)的一个子类。BufferedInputStream的主要目的是提高输入流的读取效率,通过内部维护一个缓冲区来批量处理...

    BufferedInputStream 比 InputStream 性能点(实验数据报告)

    测试结果显示,相比于直接使用InputStream进行读取,BufferedInputStream可以减少磁盘IO次数,提高数据读写的效率。 不过,值得注意的是,性能提升的明显程度与数据量的大小有关。在数据量较小时,性能提升的效果...

    Android实现下载zip压缩文件并解压的方法(附源码)

    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教程之javaIO详解

    Java IO 中的 File 类、输入流和输出流是处理输入输出操作的基本类和方法,BufferedOutputStream、BufferedInputStream、DataOutputStream 和 DataInputStream 等过滤流提供了带缓冲的读写和基本数据类型的读写功能...

    java-IO框架图

    例如,BufferedInputStream和BufferedOutputStream可以在原始流之上添加缓冲功能,提高读写效率;GZIPOutputStream和GZIPInputStream可以实现数据的GZIP压缩和解压。 在Java IO框架图中,我们可以看到这些类和接口...

    commons-io-2.4 包含了所有commons-io的jar包和源码

    此外,BufferedInputStream和BufferedOutputStream等缓冲流类能提高I/O性能,而FilterInputStream和FilterOutputStream则允许自定义流过滤。 3. **转换操作**:IOUtils类包含了一系列静态方法,用于读取流到字符串...

    java.io包详细解说

    Java IO包是Java标准库中的核心组件之一,主要用于处理输入和输出操作。这个包包含了大量类和接口,它们提供了各种输入输出流、字符编码、数据转换以及文件操作等功能。Java IO的设计采用了Decorator模式,使得在不...

    JavaIO流详解归纳.pdf

    了解 Java 的 IO 类,IO 流是 Java 中的基础概念之一。Java 的 IO 类分为两大类:Input/Output 和 Reader/Writer。Input/Output 流是字节流, Reader/Writer 是字符流。Input/Output 流是 Java 中的基础流,所有的...

    commons-io-2.2

    4. **线程安全的I/O操作**:对于多线程环境,Apache Commons IO提供了线程安全的I/O工具,比如`BufferedInputStream`和`BufferedOutputStream`的线程安全版本,确保并发操作的正确性。 5. **文件观察和监听**:`...

    java之io流实例

    - FilterInputStream和FilterOutputStream是过滤流,它们可以附加在其他流之上,增加额外的功能,比如校验和计算、数据压缩等。 6. 文件操作: - File类是Java处理文件的基础,提供了创建、删除、重命名文件以及...

    java IO流精讲 JAVA IO流实例开发

    在Java IO库中,存在一对“装饰器”流,即BufferedInputStream和BufferedReader。它们提供缓冲功能,可以显著提高数据读写的效率。例如,使用BufferedReader.read()方法可以一次性读取一行文本,而不是一个字符一个...

    IO流结构图_io_java_思维导图_

    在输入流中,FilterInputStream类提供了一种装饰者模式,可以添加额外的功能到已有的输入流上,如BufferedInputStream可以增加缓冲功能,提高读取性能。在输出流中,也有类似的FilterOutputStream类,例如...

    commons-io-2.4.jar包 官方免费版

    在压缩包中,除了`commons-io-2.4.jar`本身,还有其他URL文件,可能是提供额外资源的链接,如"去脚本之家看看.url"可能指向一个编程资源网站,"领取天猫淘宝内部优惠券.url"可能是促销信息,而"服务器软件.url"可能...

    commons-io-2.11.0.rar

    2. 流操作:提供了许多对输入/输出流进行读写、转换和操作的工具类,如`BufferedInputStream` 和 `BufferedOutputStream`,以及处理字符编码的`CharStreams`。此外,还有用于读取和写入流的便捷方法,如`IOUtils....

    java_io详解

    ### Java IO详解 #### 1. 什么是IO 在计算机科学中,IO(Input/Output,输入/输出)指的是程序与外部系统之间进行数据交换的过程。在Java中,IO操作主要通过`java.io`包来实现,这个包包含了用于文件读写、标准...

    JAVA IO流缓冲字节流缓冲字符流等流经典代码示例加注释总结.rar

    2、常用21个IO流:FileWriter、FileReader、CharArrayReader、CharArrayWriter、CharSequence、OutputStreamWriter、FileOutputStream、InputStreamReader、PrintWriter、BufferedReader、InputStream、...

    java中的IO的基础教学(1)

    处理流则是对已有流的功能进行增强或转换,如BufferedInputStream/BufferedReader。 三、常用IO流类 1. FileInputStream和FileOutputStream:分别用于读取和写入文件的字节流。 2. FileReader和FileWriter:用于...

    Java IO

    Java IO的基本概念之一是流,它是一种数据传输的方式。Java中的流被抽象成一系列连续的数据元素,这些数据元素可以是字节或字符。流分为两种基本类型:输入流和输出流。输入流是从外部源读取数据到程序,而输出流则...

    Java-Io流,练习

    为了提高IO操作的效率,Java提供了缓冲流,如`BufferedInputStream`和`BufferedOutputStream`,以及`BufferedReader`和`BufferedWriter`。这些类在内部维护了一个缓冲区,可以减少实际的物理I/O次数。 五、转换流...

    Java_IO完全总结

    Java IO系统的设计原则之一是高度模块化和可扩展性,通过抽象出一系列接口来支持各种不同类型的I/O操作。例如,`InputStream`和`OutputStream`接口分别用于读取和写入数据,它们构成了Java IO系统的核心基础。此外,...

Global site tag (gtag.js) - Google Analytics