IO-BufferedStream

java.io

类 BufferedInputStream

java.lang.Object

┗java.io.InputStream

┗java.io.FilterInputStream

┗java.io.BufferedInputStream

所有已实现的接口:

Closeable

public class BufferedInputStream extends FilterInputStream

BufferedInputStream 为另一个输入流添加一些功能,即缓冲输入以及支持 mark 和 reset 方法的能力。在创建 BufferedInputStream 时,会创建一个内部缓冲区数组。在读取或跳过流中的字节时,可根据需要从包含的输入流再次填充该内部缓冲区,一次填充多个字节。mark 操作记录输入流中的某个点,reset 操作使得在从包含的输入流中获取新字节之前,再次读取自最后一次 mark 操作后读取的所有字节。

字段摘要

protected  byte[] buf

存储数据的内部缓冲区数组。

protected  int count

比缓冲区中最后一个有效字节的索引大 1 的索引。

protected  int marklimit

调用 mark 方法后,在后续调用 reset 方法失败之前所允许的最大提前读取量。

protected  int markpos

最后一次调用 mark 方法时 pos 字段的值。

protected  int pos

缓冲区中的当前位置。

从类 java.io.FilterInputStream 继承的字段

in

构造方法摘要

BufferedInputStream(InputStream in)

创建一个 BufferedInputStream 并保存其参数,即输入流 in,以便将来使用。

BufferedInputStream(InputStream in, int size)

创建具有指定缓冲区大小的 BufferedInputStream 并保存其参数,即输入流 in,以便将来使用。

方法摘要

int available()

返回可以从此输入流读取(或跳过)、且不受此输入流接下来的方法调用阻塞的估计字节数。

void close()

关闭此输入流并释放与该流关联的所有系统资源。

void mark(int readlimit)

参见 InputStream 的 mark 方法的常规协定。

boolean markSupported()

测试此输入流是否支持 mark 和 reset 方法。

int read()

参见 InputStream 的 read 方法的常规协定。

int read(byte[] b, int off, int len)

从此字节输入流中给定偏移量处开始将各字节读取到指定的 byte 数组中。

void reset()

参见 InputStream 的 reset 方法的常规协定。

long skip(long n)

参见 InputStream 的 skip 方法的常规协定。

从类 java.io.FilterInputStream 继承的方法

read

从类 java.lang.Object 继承的方法

clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

字段详细信息

buf

protected volatile byte[] buf存储数据的内部缓冲区数组。必要时可用另一个不同大小的数组替换它。

count

protected int count比缓冲区中最后一个有效字节的索引大 1 的索引。此值始终处于 0 到 buf.length 的范围内;从 buf[0] 到 buf[count-1] 的元素包含从底层输入流中获取的缓冲输入数据。

pos

protected int pos缓冲区中的当前位置。这是将从 buf 数组中读取的下一个字符的索引。

此值始终处于 0 到 count 的范围内。如果此值小于 count,则 buf[pos] 将作为下一个输入字节;如果此值等于 count,则下一次 read 或 skip 操作需要从包含的输入流中读取更多的字节。

markpos

protected int markpos最后一次调用 mark 方法时 pos 字段的值。

此值始终处于 -1 到 pos 的范围内。如果输入流中没有被标记的位置,则此字段为 -1。如果输入流中有被标记的位置,则 buf[markpos] 将用作 reset 操作后的第一个输入字节。如果 markpos 不是 -1,则从位置 buf[markpos] 到 buf[pos-1] 之间的所有字节都必须保留在缓冲区数组中(尽管对 count、pos 和 markpos 的值进行适当调整后,这些字节可能移动到缓冲区数组中的其他位置);除非 pos 与 markpos 的差超过 marklimit,否则不能将其丢弃。

marklimit

protected int marklimit调用 mark 方法后,在后续调用 reset 方法失败之前所允许的最大提前读取量。只要 pos 与 markpos 之差超过 marklimit,就可以通过将 markpos 设置为 -1 来删除该标记。

构造方法详细信息

BufferedInputStream

public BufferedInputStream(InputStream in)

创建一个 BufferedInputStream 并保存其参数,即输入流 in,以便将来使用。创建一个内部缓冲区数组并将其存储在 buf 中。

参数:

in - 底层输入流。

BufferedInputStream

public BufferedInputStream(InputStream in, int size)

创建具有指定缓冲区大小的 BufferedInputStream 并保存其参数,即输入流 in,以便将来使用。创建一个长度为 size 的内部缓冲区数组并将其存储在 buf 中。

参数:

in - 底层输入流。

size - 缓冲区大小。

抛出:

IllegalArgumentException - 如果 size <= 0

方法详细信息

read

public int read()throws IOException

参见 InputStream 的 read 方法的常规协定。

覆盖:

类 FilterInputStream 中的 read

返回:

下一个数据字节,如果到达流末尾,则返回 -1。

抛出:

IOException - 如果已经调用其 close() 方法关闭了此输入流,或者发生 I/O 错误。

read

public int read(byte[] b, int off, int len) throws IOException

从此字节输入流中给定偏移量处开始将各字节读取到指定的 byte 数组中。

此方法实现了 InputStream 类相应 read 方法的常规协定。另一个便捷之处在于,它将通过重复地调用底层流的 read 方法,尝试读取尽可能多的字节。这种迭代的 read 会一直继续下去,直到满足以下条件之一:

已经读取了指定的字节数,

底层流的 read 方法返回 -1,指示文件末尾(end-of-file),或者

底层流的 available 方法返回 0,指示将阻塞后续的输入请求。

如果第一次对底层流调用 read 返回 -1(指示文件末尾),则此方法返回 -1。否则此方法返回实际读取的字节数。

鼓励(但不是必须)此类的各个子类以相同的方式尝试读取尽可能多的字节。

覆盖

类 FilterInputStream 中的 read

参数:

b - 目标缓冲区。

off - 开始存储字节处的偏移量。

len - 要读取的最大字节数。

返回:

读取的字节数;如果已到达流末尾,则返回 -1。

抛出:

IOException - 如果已经调用其 close() 方法关闭了此输入流,或者发生 I/O 错误。

 

skip

public long skip(long n) throws IOException

参见 InputStream 的 skip 方法的常规协定。

覆盖:

类 FilterInputStream 中的 skip

参数:

n - 要跳过的字节数。

返回:

跳过的实际字节数。

抛出:

IOException - 如果流不支持查找操作;或者已经调用其 close() 方法关闭了此输入流;或者发生 I/O 错误。

available

public int available() throws IOException

返回可以从此输入流读取(或跳过)、且不受此输入流接下来的方法调用阻塞的估计字节数。接下来的调用可能是同一个线程,也可能是不同的线程。一次读取或跳过这么多字节将不会受阻塞,但可以读取或跳过数量更少的字节。

此方法返回缓冲区中剩余的待读取字节数 (count - pos) 与调用 in.available() 的结果之和。

覆盖:

类 FilterInputStream 中的 available

返回:

可以不受阻塞地从此输入流读取(或跳过)的估计字节数。

抛出:

IOException - 如果已经调用其 close() 方法关闭了此输入流,或者发生 I/O 错误。

mark

public void mark(int readlimit)

参见 InputStream 的 mark 方法的常规协定。

覆盖:

类 FilterInputStream 中的 mark

参数:

readlimit - 在标记位置变为无效之前可以读取字节的最大限制。

reset

public void reset() throws IOException

参见 InputStream 的 reset 方法的常规协定。

如果 markpos 为 -1(尚未设置标记,或者标记已失效),则抛出 IOException。否则将 pos 设置为与 markpos 相等。

覆盖:

类 FilterInputStream 中的 reset

抛出:

IOException - 如果尚未标记此流;或者标记已失效;或者已经调用其 close() 方法关闭了此输入流;或者发生 I/O 错误。

markSupported

public boolean markSupported()

测试此输入流是否支持 mark 和 reset 方法。BufferedInputStream 的 markSupported 方法返回 true。

覆盖:

类 FilterInputStream 中的 markSupported

返回:

一个 boolean 值,指示此流类型是否支持 mark 和 reset 方法。

close

public void close() throws IOException

关闭此输入流并释放与该流关联的所有系统资源。关闭了该流之后,后续的 read()、available()、reset() 或 skip() 调用都将抛出 IOException。关闭之前已关闭的流不会产生任何效果。

指定者:

接口 Closeable 中的 close

覆盖:

类 FilterInputStream 中的 close

抛出:

IOException - 如果发生 I/O 错误。

时间: 2024-11-05 11:58:20

IO-BufferedStream的相关文章

Java和C#基本类库的区别

java.lang java .net Boolean System.Boolean Byte System. Byte Character System.Char Class System.Type Double System.Double Float System.Single Integer System.Int32 Long System.Int64 Math System.Math Object System.Object Process System. Diagnostics .Pr

?C# 搜索 .NET Framework 类库

java.lang包 java.lang java .net Boolean System.Boolean Byte System. Byte Character System.Char Class System.Type Double System.Double Float System.Single Integer System.Int32 Long System.Int64 Math System.Math Object System.Object Process System. Diag

MYSQL报Fatal error encountered during command execution.错误的解决方法

{MySql.Data.MySqlClient.MySqlException (0x80004005): Fatal error encountered during command execution. ---> MySql.Data.MySqlClient.MySqlException (0x80004005): Fatal error encountered attempting to read the resultset. ---> MySql.Data.MySqlClient.MyS

JAVA API与.NetAPI

C# 搜索  .NET Framework 类库 java.lang包 java.lang java .net Boolean System.Boolean Byte System. Byte Character System.Char Class System.Type Double System.Double Float System.Single Integer System.Int32 Long System.Int64 Math System.Math Object System.Ob

java IO 包源码解析

本文参考连接:http://blog.csdn.net/class281/article/details/24849275                         http://zhhphappy.iteye.com/blog/1562427 一.IO包简要类图 Java I/O流部分分为两个模块,即Java1.0中就有的面向字节的流(Stream),以及Java1.1中大幅改动添加的面向字符的流(Reader & Writer).添加面向字符的流主要是为了支持国际化,旧的I/O流仅支持

java之IO流

知识点: java.io包中:类File:实现的接口:Serializable,Comparable<File> 含义:文件和目录路径名的抽象表示形式.  [抽象路径名 中第一个名称是目录名,抽象路径名中第一个名称之后每个名称都是表示一个目录,最后一个名称即可以表示目录也可以表示文件]  用户界面和操作系统使用与系统相关的 路径名字符串 来命名文件和目录.此类呈现分层路径名的一个抽象的.与系统无关的视图. 抽象路径名 有两部分组成: 1)一个可选的与系统相关的前缀字符串,比如盘符:"

IO操作 第一篇 学习(转载)

问题8:如何使用通配符搜索指定目录内的所有文件: 解决方案: 使用DirectoryInfo.GetFiles方法的重载版本,它可以接受一个过滤表达式,返回FileInfo数组,另外它的参数还可以指定是否对子目录进行查找.如: dir.GetFiles("*.txt", SearchOption.AllDirectories); 问题9:如何复制.移动.重命名.删除文件和目录: 解决方案:使用FileInfo和DirectoryInfo类. 下面是FileInfo类的相关方法: Fil

BufferedStream类 - 缓冲流

BufferedStream常用于对其他流的一个封装,它必须和其他流结合一起使用.MemoryStream将所有的内容都放入内存中,而BufferedStream不是.BufferedStream在基础流写入内存中能够提高读取与写入速度.但是缓冲区设置的大小对性能也有影响,默认值是4096字节,并能够根据需求自动增长.并且很多属性都与基础流一致.缓冲数据能够减少对操作系统的调用次数,缓冲数据主要存储在缓冲区中,缓冲区是内存中的字节块.BufferedStream类提供从基础数据源或存储库读取字节

命名空间System.IO

基本介绍:System.IO 命名空间提供读写文件和数据流的类型.基本文件和目录支持的类型. 原文:http://blog.sina.com.cn/s/blog_48a45b950100erhz.html http://edu.cnzz.cn/201510/977513da.shtml 主要的类 字节流:Stream.BufferedStream.MemoryStream.UnmanagedMemoryStream.FileStream 二进制IO流:BinaryReader和BinaryWri

Java IO之简单输入输出

Java中的IO分为两个部分,以InputStream和Reader为基类的输入类,以OutputStream和Writer为基类的输出类.其中InputStream和OutputStream以字节为单位进行IO,而Reader和Writer以字符为单位. 除了输入输出,还有一系列类库称为Filter,或成为装饰器.对于输入可用FilterInputStream和FilterReader的派生类,输出可用FilterOutputStream和FilterWriter的派生类,其中FilterIn