- 所有已实现的接口:
Closeable
,AutoCloseable
FileInputStream
从文件系统中的文件获取输入字节。哪些文件可用取决于主机环境。
FileInputStream
用于读取原始字节流,例如图像数据。要读取字符流,请考虑使用 FileReader
。
-
构造方法总结
构造方法构造方法描述FileInputStream
(File file) 通过打开与实际文件的连接来创建FileInputStream
,该文件由文件系统中的File
对象file
命名。FileInputStream
(FileDescriptor fdObj) 使用文件描述符fdObj
创建一个FileInputStream
,它表示与文件系统中实际文件的现有连接。FileInputStream
(String name) 通过打开与实际文件的连接来创建FileInputStream
,该文件在文件系统中以路径名name
命名。 -
方法总结
修饰符和类型方法描述int
返回可以从此输入流中读取(或跳过)的剩余字节数的估计值,而不会被下一次为此输入流的方法调用阻塞。void
close()
关闭此文件输入流并释放与该流关联的所有系统资源。返回与此文件输入流关联的唯一FileChannel
对象。final FileDescriptor
getFD()
返回FileDescriptor
对象,该对象表示与此FileInputStream
使用的文件系统中的实际文件的连接。int
read()
从此输入流中读取一个字节的数据。int
read
(byte[] b) 从此输入流中读取最多b.length
字节的数据到字节数组中。int
read
(byte[] b, int off, int len) 从此输入流中读取最多len
字节的数据到字节数组中。long
skip
(long n) 跳过并丢弃输入流中的n
字节数据。在类 java.io.InputStream 中声明的方法
mark, markSupported, nullInputStream, readAllBytes, readNBytes, readNBytes, reset, skipNBytes, transferTo
-
构造方法详细信息
-
FileInputStream
通过打开与实际文件的连接来创建FileInputStream
,该文件在文件系统中以路径名name
命名。创建一个新的FileDescriptor
对象来表示此文件连接。首先,如果有一个安全管理器,它的
checkRead
方法会以name
参数作为它的参数被调用。如果命名文件不存在,是目录而不是常规文件,或者由于某些其他原因无法打开以供读取,则抛出
FileNotFoundException
。- 参数:
name
- 系统相关的文件名。- 抛出:
FileNotFoundException
- 如果文件不存在,是目录而不是常规文件,或者由于某些其他原因无法打开以供读取。SecurityException
- 如果安全管理器存在且其checkRead
方法拒绝对该文件的读取访问。- 参见:
-
FileInputStream
通过打开与实际文件的连接来创建FileInputStream
,该文件由文件系统中的File
对象file
命名。创建一个新的FileDescriptor
对象来表示此文件连接。首先,如果有一个安全管理器,它的
checkRead
方法被调用,以file
参数表示的路径作为它的参数。如果命名文件不存在,是目录而不是常规文件,或者由于某些其他原因无法打开以供读取,则抛出
FileNotFoundException
。- 参数:
file
- 要打开以供读取的文件。- 抛出:
FileNotFoundException
- 如果文件不存在,是目录而不是常规文件,或者由于某些其他原因无法打开以供读取。SecurityException
- 如果安全管理器存在且其checkRead
方法拒绝对该文件的读取访问。- 参见:
-
FileInputStream
使用文件描述符fdObj
创建一个FileInputStream
,它表示与文件系统中实际文件的现有连接。如果有安全管理器,则以文件描述符
fdObj
作为参数调用其checkRead
方法,以查看是否可以读取文件描述符。如果拒绝对文件描述符的读取访问,则会抛出SecurityException
。如果
fdObj
为空,则抛出NullPointerException
。如果
fdObj
是invalid
,则此构造函数不会抛出异常。但是,如果在结果流上调用这些方法以尝试在流上进行 I/O,则会抛出IOException
。- 参数:
fdObj
- 为读取而打开的文件描述符。- 抛出:
SecurityException
- 如果安全管理器存在且其checkRead
方法拒绝对文件描述符的读取访问。- 参见:
-
-
方法详情
-
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 注意:
-
只有在直接调用或通过 try-with-resources 调用时,覆盖
close()
以执行清理操作才是可靠的。不要依赖终结来调用close
; finalization 不可靠,已弃用。如果需要清理本机资源,则应使用其他机制,例如 Cleaner。 - 抛出:
IOException
- 如果发生 I/O 错误。
-
getFD
返回FileDescriptor
对象,该对象表示与此FileInputStream
使用的文件系统中的实际文件的连接。- 返回:
- 与此流关联的文件描述符对象。
- 抛出:
IOException
- 如果发生 I/O 错误。- 参见:
-
getChannel
返回与此文件输入流关联的唯一FileChannel
对象。返回通道的初始
position
将等于目前从文件中读取的字节数。从此流中读取字节将增加通道的位置。显式或通过读取更改通道的位置将更改此流的文件位置。- 返回:
- 与此文件输入流关联的文件通道
- 自从:
- 1.4
-