FileInputStream
java.lang.Object
|—java.io.InputStream
|—|—java.io.FileInputStream
public class FileInputStream
extends InputStream
FileInputStream 从文件系统中的文件获取输入字节。 可用的文件取决于主机环境。
FileInputStream 用于读取原始字节流,例如图像数据。 要读取字符流,请考虑使用 FileReader。
Since:
JDK1.0
构造函数摘要
构造函数 | 描述 |
---|---|
FileInputStream(File file) | 通过打开与实际文件的连接来创建 FileInputStream,该文件由文件系统中的 File 对象文件命名。 |
FileInputStream(FileDescriptor fdObj) | 使用文件描述符 fdObj 创建一个 FileInputStream,它表示与文件系统中实际文件的现有连接。 |
FileInputStream(String name) | 通过打开与实际文件的连接来创建 FileInputStream,该文件由文件系统中的路径名 name 命名。 |
方法总结
修饰符和类型 | 方法 | 描述 |
---|---|---|
int | available() | 返回可以从此输入流中读取(或跳过)的剩余字节数的估计值,而不会被下一次调用此输入流的方法阻塞。 |
void | close() | 关闭此文件输入流并释放与该流关联的所有系统资源。 |
protected void | finalize() | 确保在不再引用此文件输入流时调用该文件输入流的 close 方法。 |
FileChannel | getChannel() | 返回与此文件输入流关联的唯一 FileChannel 对象。 |
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, reset |
从类 java.lang.Object 继承的方法 |
---|
clone, equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
构造函数详细信息
FileInputStream
public FileInputStream(String name) throws FileNotFoundException
通过打开与实际文件的连接来创建 FileInputStream,该文件由文件系统中的路径名 name 命名。 创建一个新的 FileDescriptor 对象来表示此文件连接。
首先,如果有一个安全管理器,它的 checkRead 方法会以 name 参数作为它的参数来调用。
如果命名文件不存在,是目录而不是常规文件,或者由于某些其他原因无法打开读取,则抛出 FileNotFoundException。
参数:
参数名称 | 参数描述 |
---|---|
name | 系统相关的文件名。 |
Throws:
Throw名称 | Throw描述 |
---|---|
FileNotFoundException | 如果文件不存在,是目录而不是常规文件,或者由于某些其他原因无法打开读取。 |
SecurityException | 如果存在安全管理器并且其 checkRead 方法拒绝对文件的读取访问。 |
FileInputStream
public FileInputStream(File file) throws FileNotFoundException
通过打开与实际文件的连接来创建 FileInputStream,该文件由文件系统中的 File 对象文件命名。 创建一个新的 FileDescriptor 对象来表示此文件连接。
首先,如果存在安全管理器,则调用其 checkRead 方法,并将文件参数表示的路径作为其参数。
如果命名文件不存在,是目录而不是常规文件,或者由于某些其他原因无法打开读取,则抛出 FileNotFoundException。
参数:
参数名称 | 参数描述 |
---|---|
file | 要打开以供阅读的文件。 |
Throws:
Throw名称 | Throw描述 |
---|---|
FileNotFoundException | 如果文件不存在,是目录而不是常规文件,或者由于某些其他原因无法打开读取。 |
SecurityException | 如果存在安全管理器并且其 checkRead 方法拒绝对文件的读取访问。 |
FileInputStream
public FileInputStream(FileDescriptor fdObj)
使用文件描述符 fdObj 创建一个 FileInputStream,它表示与文件系统中实际文件的现有连接。
如果有安全管理器,则调用它的 checkRead 方法,并以文件描述符 fdObj 作为其参数,以查看是否可以读取文件描述符。 如果拒绝对文件描述符的读取访问,则会引发 SecurityException。
如果 fdObj 为 null,则抛出 NullPointerException。
如果 fdObj 无效,此构造函数不会引发异常。 但是,如果在结果流上调用方法以尝试对流进行 I/O,则会引发 IOException。
参数:
参数名称 | 参数描述 |
---|---|
fdObj | 要打开以供读取的文件描述符。 |
Throws:
Throw名称 | Throw描述 |
---|---|
SecurityException | 如果安全管理器存在并且其 checkRead 方法拒绝对文件描述符的读取访问。 |
方法详情
read
public int read() throws IOException
从此输入流中读取一个字节的数据。 如果还没有输入可用,则此方法会阻塞。
指定者:
读入类 InputStream
返回:
数据的下一个字节,如果到达文件末尾,则为 -1。
Throws:
Throw名称 | Throw描述 |
---|---|
IOException | 如果发生 I/O 错误。 |
read
public int read(byte[] b) throws IOException
从此输入流中读取最多 b.length 个字节的数据到字节数组中。 此方法会阻塞,直到某些输入可用。
覆盖:
读入类 InputStream
参数:
参数名称 | 参数描述 |
---|---|
b | 读取数据的缓冲区。 |
返回:
读入缓冲区的总字节数,如果由于已到达文件末尾而没有更多数据,则为 -1。
Throws:
Throw名称 | Throw描述 |
---|---|
IOException | 如果发生 I/O 错误。 |
read
public int read(byte[] b, int off, int len) throws IOException
从此输入流中读取最多 len 个字节的数据到一个字节数组中。 如果 len 不为零,则该方法会阻塞,直到某些输入可用; 否则,不读取任何字节并返回 0。
覆盖:
读入类 InputStream
参数:
参数名称 | 参数描述 |
---|---|
b | 读取数据的缓冲区。 |
off | 目标数组 b 中的起始偏移量 |
len | 读取的最大字节数。 |
返回:
读入缓冲区的总字节数,如果由于已到达文件末尾而没有更多数据,则为 -1。
Throws:
Throw名称 | Throw描述 |
---|---|
NullPointerException | 如果 b 为空。 |
IndexOutOfBoundsException | 如果 off 为负数,len 为负数,或者 len 大于 b.length – off |
IOException | 如果发生 I/O 错误。 |
skip
public long skip(long n) throws IOException
跳过并丢弃输入流中的 n 字节数据。
由于各种原因,skip 方法最终可能会跳过一些较小的字节数,可能为 0。如果 n 为负数,该方法将尝试向后跳过。 如果支持文件在其当前位置不支持向后跳过,则会引发 IOException。 返回实际跳过的字节数。 如果它向前跳过,它会返回一个正值。 如果向后跳过,则返回负值。
此方法可能会跳过比后备文件中剩余的字节更多的字节。 这不会产生异常,并且跳过的字节数可能包括超出后备文件 EOF 的一些字节数。 在跳过结尾后尝试从流中读取将导致 -1 指示文件的结尾。
覆盖:
在 InputStream 类中跳过
参数:
参数名称 | 参数描述 |
---|---|
n | 要跳过的字节数。 |
返回:
跳过的实际字节数。
Throws:
Throw名称 | Throw模式 |
---|---|
IOException | 如果 n 为负数,如果流不支持查找,或者发生 I/O 错误。 |
available
public int available() throws IOException
返回可以从此输入流中读取(或跳过)的剩余字节数的估计值,而不会被下一次调用此输入流的方法阻塞。 当文件位置超出 EOF 时返回 0。 下一次调用可能是同一个线程或另一个线程。 单次读取或跳过这么多字节不会阻塞,但可能会读取或跳过更少的字节。
在某些情况下,非阻塞读取(或跳过)可能会在其速度较慢时被阻止,例如通过慢速网络读取大文件时。
覆盖:
在类 InputStream 中可用
返回:
估计可以从该输入流中读取(或跳过)而不会阻塞的剩余字节数。
Throws:
Throw名称 | Throw模式 |
---|---|
IOException | 如果此文件输入流已通过调用 close 关闭或发生 I/O 错误。 |
close
public void close() throws IOException
关闭此文件输入流并释放与该流关联的所有系统资源。
如果此流具有关联的通道,则该通道也将关闭。
指定者:
在接口 AutoCloseable 中关闭
指定者:
在接口Closeable中关闭
覆盖:
在类 InputStream 中关闭
Throws:
Throw名称 | Throw模式 |
---|---|
IOException | 如果发生 I/O 错误。 |
getFD
public final FileDescriptor getFD() throws IOException
返回 FileDescriptor 对象,该对象表示与此 FileInputStream 正在使用的文件系统中的实际文件的连接。
返回:
与此流关联的文件描述符对象。
Throws:
Throw名称 | Throw模式 |
---|---|
IOException | 如果发生 I/O 错误。 |
getChannel
public FileChannel getChannel()
返回与此文件输入流关联的唯一 FileChannel 对象。
返回通道的初始位置将等于到目前为止从文件中读取的字节数。 从此流中读取字节将增加通道的位置。 显式或通过读取更改通道的位置将更改此流的文件位置。
返回:
与此文件输入流关联的文件通道
Since:
1.4
finalize
protected void finalize() throws IOException
确保在不再引用此文件输入流时调用该文件输入流的 close 方法。
覆盖:
在类 Object 中完成
Throws:
Throw名称 | Throw模式 |
---|---|
IOException | 如果发生 I/O 错误。 |