- 所有已实现的接口:
-
Closeable
,AutoCloseable
FileInputStream
从文件系统中的文件获取输入字节。可用的文件取决于主机环境。
FileInputStream
用于读取原始字节流,例如图像数据。要读取字符流,请考虑使用 FileReader
。
-
Constructor Summary
ConstructorDescriptionFileInputStream
(File file) 通过打开与文件系统中的File
对象file
命名的实际文件建立FileInputStream
。FileInputStream
(FileDescriptor fdObj) 通过使用表示文件系统中实际文件的现有连接的文件描述符fdObj
创建FileInputStream
。FileInputStream
(String name) 通过打开与文件系统中路径名name
命名的实际文件建立FileInputStream
。 -
Method Summary
Modifier and TypeMethodDescriptionint
返回可以在下一次调用此输入流的方法时读取(或跳过)的剩余字节数的估计值,而不会被阻塞。void
close()
关闭此文件输入流并释放与流关联的任何系统资源。返回与此文件输入流关联的唯一FileChannel
对象。final FileDescriptor
getFD()
返回代表此FileInputStream
使用的文件系统中实际文件的连接的FileDescriptor
对象。int
read()
从此输入流中读取一个字节的数据。int
read
(byte[] b) 从此输入流中最多读取b.length
字节的数据到字节数组中。int
read
(byte[] b, int off, int len) 从此输入流中最多读取len
字节的数据到字节数组中。long
skip
(long n) 从输入流中跳过并丢弃n
字节的数据。Methods declared in class java.io.InputStream
mark, markSupported, nullInputStream, readAllBytes, readNBytes, readNBytes, reset, skipNBytes, transferTo
-
Constructor Details
-
FileInputStream
通过打开与文件系统中路径名name
命名的实际文件建立FileInputStream
。创建一个新的FileDescriptor
对象来表示此文件连接。首先,如果存在安全管理器,则将使用
name
参数调用其checkRead
方法。如果命名文件不存在,是目录而不是常规文件,或由于某种其他原因无法打开以供读取,则会抛出
FileNotFoundException
。- 参数:
-
name
- 系统相关的文件名。 - 抛出:
-
FileNotFoundException
- 如果文件不存在,是目录而不是常规文件,或由于某种其他原因无法打开以供读取。 -
SecurityException
- 如果存在安全管理器且其checkRead
方法拒绝对文件的读取访问。 - 参见:
-
FileInputStream
通过打开与文件系统中的File
对象file
命名的实际文件建立FileInputStream
。创建一个新的FileDescriptor
对象来表示此文件连接。首先,如果存在安全管理器,则将使用由
file
参数表示的路径调用其checkRead
方法。如果命名文件不存在,是目录而不是常规文件,或由于某种其他原因无法打开以供读取,则会抛出
FileNotFoundException
。- 参数:
-
file
- 要打开以供读取的文件。 - 抛出:
-
FileNotFoundException
- 如果文件不存在,是目录而不是常规文件,或由于某种其他原因无法打开以供读取。 -
SecurityException
- 如果存在安全管理器且其checkRead
方法拒绝对文件的读取访问。 - 参见:
-
FileInputStream
通过使用表示文件系统中实际文件的现有连接的文件描述符fdObj
创建FileInputStream
。如果存在安全管理器,则将使用文件描述符
fdObj
调用其checkRead
方法,以查看是否可以读取文件描述符。如果对文件描述符的读取访问被拒绝,则会抛出SecurityException
。如果
fdObj
为 null,则会抛出NullPointerException
。如果
fdObj
为invalid
,则此构造函数不会抛出异常。但是,如果在结果流上调用方法以尝试对流进行 I/O,则会抛出IOException
。- 参数:
-
fdObj
- 要打开以供读取的文件描述符。 - 抛出:
-
SecurityException
- 如果存在安全管理器且其checkRead
方法拒绝对文件描述符的读取访问。 - 参见:
-
-
Method Details
-
read
从此输入流中读取一个字节的数据。如果尚未有输入可用,则此方法将阻塞。- 指定者:
-
read
在类InputStream
- 返回:
-
下一个数据字节,如果已到达文件末尾,则返回
-1
。 - 抛出:
-
IOException
- 如果发生 I/O 错误。
-
read
从此输入流中最多读取b.length
字节的数据到字节数组中。此方法将阻塞,直到有一些输入可用。- 覆盖:
-
read
在类InputStream
- 参数:
-
b
- 要读取数据的缓冲区。 - 返回:
-
读入缓冲区的总字节数,如果没有更多数据因已到达文件末尾而返回
-1
。 - 抛出:
-
IOException
- 如果发生 I/O 错误。 - 参见:
-
read
从此输入流中最多读取len
字节的数据到字节数组中。如果len
不为零,则该方法将阻塞,直到有一些输入可用;否则,不会读取任何字节,返回0
。- 覆盖:
-
read
在类InputStream
- 参数:
-
b
- 要读取数据的缓冲区。 -
off
- 写入数据的数组b
中的起始偏移量。 -
len
- 要读取的最大字节数。 - 返回:
-
读入缓冲区的总字节数,如果没有更多数据因已到达流末尾而返回
-1
。 - 抛出:
-
NullPointerException
- 如果b
为null
。 -
IndexOutOfBoundsException
- 如果off
为负数,len
为负数,或len
大于b.length - off
。 -
IOException
- 如果发生 I/O 错误。 - 参见:
-
skip
跳过并丢弃输入流中的n
字节数据。skip
方法可能因为各种原因而最终跳过一些较小数量的字节,可能为0
。如果n
为负数,则该方法将尝试向后跳过。如果后备文件在当前位置不支持向后跳过,则会抛出IOException
。返回实际跳过的字节数。如果向前跳过,则返回正值。如果向后跳过,则返回负值。该方法可能会跳过比后备文件中剩余的字节数更多的字节。这不会产生异常,跳过的字节数可能包括超出后备文件EOF的一些字节。在跳过文件末尾后尝试从流中读取将导致返回-1,表示文件结束。
- 覆盖:
-
skip
在类中InputStream
- 参数:
-
n
- 要跳过的字节数。 - 返回:
- 实际跳过的字节数。
- 抛出:
-
IOException
- 如果n为负数,如果流不支持寻址,或者发生I/O错误。 - 参见:
-
available
返回一个估计值,表示可以从此输入流中读取(或跳过)的剩余字节数,而不会被下一次调用此输入流的方法阻塞。当文件位置超出EOF时返回0。下一次调用可能是同一个线程或另一个线程。读取或跳过这么多字节不会阻塞,但可能读取或跳过较少的字节。在某些情况下,非阻塞读取(或跳过)可能看起来被阻塞,而实际上只是慢,例如在慢速网络上读取大文件时。
- 覆盖:
-
available
在类中InputStream
- 返回:
- 估计可以从此输入流中读取(或跳过)的剩余字节数,而不会阻塞。
- 抛出:
-
IOException
- 如果此文件输入流已通过调用close
关闭,或者发生I/O错误。
-
close
关闭此文件输入流并释放与流相关联的任何系统资源。如果此流有一个关联的通道,则该通道也将被关闭。
- 指定者:
-
close
在接口中AutoCloseable
- 指定者:
-
close
在接口中Closeable
- 覆盖:
-
close
在类中InputStream
- API注释:
-
重写
close()
以执行清理操作仅在直接调用或由try-with-resources调用时是可靠的。 - 实现要求:
-
需要在流变得不可达后进行资源清理的子类应使用
Cleaner
机制。如果此流有一个关联的通道,则此方法将关闭该通道,进而关闭此流。重写此方法的子类应准备处理可能的重入调用。
- 抛出:
-
IOException
- 如果发生I/O错误。
-
getFD
返回代表此FileInputStream
正在使用的文件系统中实际文件连接的FileDescriptor
对象。- 返回:
- 与此流关联的文件描述符对象。
- 抛出:
-
IOException
- 如果发生I/O错误。 - 参见:
-
getChannel
返回与此文件输入流关联的唯一FileChannel
对象。返回的通道的初始
position
将等于到目前为止从文件中读取的字节数。从此流读取字节将增加通道的位置。显式更改通道的位置,或通过读取更改此流的文件位置。- 返回:
- 与此文件输入流关联的文件通道
- 自:
- 1.4
-