本文主要是介绍Java IO:BufferedInputStream使用详解及源码分析,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
使用方法
BufferedInputStream继承于FilterInputStream,提供缓冲输入流功能。缓冲输入流相对于普通输入流的优势是,它提供了一个缓冲数组,每次调用read方法的时候,它首先尝试从缓冲区里读取数据,若读取失败(缓冲区无可读数据),则选择从物理数据源(譬如文件)读取新数据(这里会尝试尽可能读取多的字节)放入到缓冲区中,最后再将缓冲区中的内容部分或全部返回给用户.由于从缓冲区里读取数据远比直接从物理数据源(譬如文件)读取速度快。
方法介绍
BufferedInputStream提供的API如下:
//构造方法
BufferedInputStream(InputStream in)
BufferedInputStream(InputStream in, int size)//下一字节是否可读
synchronized int available()
//关闭
void close()
//标记, readlimit为mark后最多可读取的字节数
synchronized void mark(int readlimit)
//是否支持mark, true
boolean markSupported()
//读取一个字节
synchronized int read()
//读取多个字节到b
synchronized int read(byte[] b, int off, int len)
//重置会mark位置
synchronized void reset()
//跳过n个字节
synchronized long skip(long n)
使用示例
public void testBufferedInput() {try {/*** 建立输入流 BufferedInputStream, 缓冲区大小为8* buffer.txt内容为* abcdefghij*/InputStream in = new BufferedInputStream(new FileInputStream(new File("buff.txt")), 8);/*从字节流中读取5个字节*/byte [] tmp = new byte[5];in.read(tmp, 0, 5);System.out.println("字节流的前5个字节为: " + new String(tmp));/*标记测试*/in.mark(6);/*读取5个字节*/in.read(tmp, 0, 5);System.out.println("字节流中第6到10个字节为: " + new String(tmp));/*reset*/in.reset();System.out.printf(
这篇关于Java IO:BufferedInputStream使用详解及源码分析的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!