- java.lang.Object
 -  
      
- java.io.InputStream
 -  
        
- java.io.FilterInputStream
 
 
 
-  
       
- 实现的所有接口
 -  
         
Closeable,AutoCloseable 
- 已知直接子类:
 -  
         
BufferedInputStream,CheckedInputStream,CipherInputStream,DataInputStream,DeflaterInputStream,DigestInputStream,InflaterInputStream,LineNumberInputStream,ProgressMonitorInputStream,PushbackInputStream 
public class FilterInputStream extends InputStream
FilterInputStream包含一些其他输入流,它将其用作其基本数据源,可能会沿途转换数据或提供其他功能。 类FilterInputStream本身只是简单地重写的所有方法InputStream与传递给所包含输入流的所有请求的版本。FilterInputStream子类可以进一步覆盖这些方法中的一些,并且还可以提供另外的方法和字段。- 从以下版本开始:
 - 1.0
 
 
-  
        
       
-  
             
字段汇总
字段 变量和类型 字段 描述 protected InputStreamin要过滤的输入流。 
-  
             
构造方法摘要
构造方法 变量 构造器 描述 protectedFilterInputStream(InputStream in)创建FilterInputStream通过分配参数in到外地this.in,以便记住它供以后使用。 
-  
             
方法摘要
所有方法 实例方法 具体的方法 变量和类型 方法 描述 intavailable()返回可以从此输入流中读取(或跳过)的字节数的估计值,而不会被此输入流的方法的下一个调用方阻塞。voidclose()关闭此输入流并释放与该流关联的所有系统资源。voidmark(int readlimit)标记此输入流中的当前位置。booleanmarkSupported()测试此输入流是否支持mark和reset方法。intread()从此输入流中读取下一个数据字节。intread(byte[] b)从此输入流将最多b.length字节的数据读b.length字节数组。intread(byte[] b, int off, int len)从此输入流len最多len字节的数据读入一个字节数组。voidreset()将此流重新定位到上次在此输入流上调用mark方法时的位置。longskip(long n)跳过并从输入流中丢弃n字节的数据。-  
               
声明方法的类 java.io.InputStream
nullInputStream, readAllBytes, readNBytes, readNBytes, transferTo 
 -  
               
 
 -  
             
 
-  
        
       
-  
             
字段详细信息
-  
in
protected volatile InputStream in
要过滤的输入流。 
 -  
 
-  
             
构造方法详细信息
-  
FilterInputStream
protected FilterInputStream(InputStream in)
创建FilterInputStream通过分配参数in到外地this.in,以便记住它供以后使用。- 参数
 -  
              
in- 基础输入流,如果要在没有基础流的情况下创建此实例,null。 
 
 -  
 
-  
             
方法详细信息
-  
read
public int read() throws IOException从此输入流中读取下一个数据字节。 值字节作为int返回,范围为0至255。 如果由于到达流末尾而没有可用字节,则返回值-1。 此方法将阻塞,直到输入数据可用,检测到流的末尾或抛出异常。此方法只执行
in.read()并返回结果。- Specified by:
 -  
              
read在类InputStream - 结果
 - 
               数据的下一个字节,如果到达流的末尾, 
              
-1。 - 异常
 -  
              
IOException- 如果发生I / O错误。 - 另请参见:
 -  
              
in 
 
-  
read
public int read(byte[] b) throws IOException从此输入流b.length最多b.length字节的数据读入一个字节数组。 此方法将阻塞,直到某些输入可用。此方法只执行调用
read(b, 0, b.length)并返回结果。 重要的是它不能代替in.read(b);FilterInputStream某些子类取决于实际使用的实现策略。- 重写:
 -  
              
read类InputStream - 参数
 -  
              
b- 读取数据的缓冲区。 - 结果
 - 
               读入缓冲区的总字节数,如果由于已到达流末尾而没有更多数据, 
              
-1。 - 异常
 -  
              
IOException- 如果发生I / O错误。 - 另请参见:
 -  
              
read(byte[], int, int) 
 
-  
read
public int read(byte[] b, int off, int len) throws IOException从此输入流len最多len个字节的数据读入一个字节数组。 如果len不为零,则该方法将阻塞,直到某些输入可用; 否则,不读取任何字节,并返回0。此方法只执行
in.read(b, off, len)并返回结果。- 重写:
 -  
              
read在类InputStream - 参数
 -  
              
b- 读取数据的缓冲区。 -  
              
off- 目标阵列b的起始偏移量 -  
              
len- 读取的最大字节数。 - 结果
 - 
               读入缓冲区的总字节数,如果由于已到达流末尾而没有更多数据, 
              
-1。 - 异常
 -  
              
NullPointerException- 如果b是null。 -  
              
IndexOutOfBoundsException- 如果off为负数,则len为负数,或len为大于b.length - off -  
              
IOException- 如果发生I / O错误。 - 另请参见:
 -  
              
in 
 
-  
skip
public long skip(long n) throws IOException跳过并从输入流中丢弃n字节的数据。 由于各种原因,skip方法可能最终跳过一些较小数量的字节,可能是0。 返回跳过的实际字节数。此方法只执行
in.skip(n)。- 重写:
 -  
              
skip类InputStream - 参数
 -  
              
n- 要跳过的字节数。 - 结果
 - 跳过的实际字节数。
 - 异常
 -  
              
IOException- 如果in.skip(n)抛出IOException。 
 
-  
available
public int available() throws IOException返回可以从此输入流中读取(或跳过)的字节数的估计值,而不会被此输入流的方法的下一个调用方阻塞。 下一个调用者可能是同一个线程或另一个线程。 单个读取或跳过这么多字节不会阻塞,但可以读取或跳过更少的字节。此方法返回
in.available()的结果。- 重写:
 -  
              
available类InputStream - 结果
 - 估计可以从此输入流中无阻塞地读取(或跳过)的字节数。
 - 异常
 -  
              
IOException- 如果发生I / O错误。 
 
-  
close
public void close() throws IOException关闭此输入流并释放与该流关联的所有系统资源。 此方法只执行in.close()。- Specified by:
 -  
              
close在界面AutoCloseable - Specified by:
 -  
              
closein interfaceCloseable - 重写:
 -  
              
close在类InputStream - 异常
 -  
              
IOException- 如果发生I / O错误。 - 另请参见:
 -  
              
in 
 
-  
mark
public void mark(int readlimit)
标记此输入流中的当前位置。 随后对reset方法的调用会在最后标记的位置重新定位此流,以便后续读取重新读取相同的字节。readlimit参数告诉此输入流允许在标记位置失效之前读取许多字节。此方法只执行
in.mark(readlimit)。- 重写:
 -  
              
mark在类InputStream - 参数
 -  
              
readlimit- 标记位置变为无效之前可读取的最大字节数。 - 另请参见:
 -  
              
in,reset() 
 
-  
reset
public void reset() throws IOException将此流重新定位到上次在此输入流上调用mark方法时的位置。此方法只执行
in.reset()。流标记旨在用于需要提前阅读以查看流中的内容的情况。 通常,这通过调用一些通用解析器最容易完成。 如果流是由解析处理的类型,那么它只是愉快地开始。 如果流不是该类型,则解析器在失败时应该抛出异常。 如果这发生在readlimit字节内,它允许外部代码重置流并尝试另一个解析器。
- 重写:
 -  
              
reset类InputStream - 异常
 -  
              
IOException- 如果未标记流或标记已失效。 - 另请参见:
 -  
              
in,mark(int) 
 
-  
markSupported
public boolean markSupported()
测试此输入流是否支持mark和reset方法。 此方法只执行in.markSupported()。- 重写:
 -  
              
markSupported类InputStream - 结果
 -  
              
true如果此流类型支持mark和reset方法; 否则为false。 - 另请参见:
 -  
              
in,InputStream.mark(int),InputStream.reset() 
 
 -  
 
 -