- java.lang.Object
-
- java.io.InputStream
-
- java.io.FileInputStream
-
- 实现的所有接口
-
Closeable
,AutoCloseable
public class FileInputStreamextends InputStream
AFileInputStream
从文件系统中的文件获取输入字节。 可用的文件取决于主机环境。FileInputStream
用于读取诸如图像数据的原始字节流。 要读取字符流,请考虑使用FileReader
。- API Note:
- 要释放此流使用的资源,应直接或通过try-with-resources调用
close()
。 子类负责清理子类获取的资源。 应修改覆盖finalize()
以执行清理的子类,以使用备用清理机制(如Cleaner
)并删除重写finalize
方法。 - 实现要求:
- 如果此的FileInputStream已经子类和
close()
方法已被重写,该close()
时的FileInputStream不可达的方法将被调用。 否则,具体实现如何执行close()
中描述的资源清理。 - 从以下版本开始:
- 1.0
- 另请参见:
-
File
,FileDescriptor
,FileOutputStream
,Files.newInputStream(java.nio.file.Path, java.nio.file.OpenOption...)
-
-
构造方法摘要
构造方法 构造器 描述 FileInputStream(File file)
通过打开与实际文件的连接来创建FileInputStream
,该文件由文件系统中的File
对象file
命名。FileInputStream(FileDescriptor fdObj)
使用文件描述符fdObj
创建FileInputStream
,该文件描述符表示与文件系统中实际文件的现有连接。FileInputStream(String name)
通过打开与实际文件的连接来创建FileInputStream
,该文件由文件系统中的路径名name
命名。
-
方法摘要
所有方法 实例方法 具体的方法 弃用的方法 变量和类型 方法 描述 int
available()
返回可以从此输入流中读取(或跳过)的剩余字节数的估计值,而不会被下一次调用此输入流的方法阻塞。void
close()
关闭此文件输入流并释放与该流关联的所有系统资源。protected void
finalize()
不推荐使用,要删除:此API元素将在以后的版本中删除。finalize
方法已被弃用,将被删除。FileChannel
getChannel()
返回与此文件输入流关联的唯一FileChannel
对象。FileDescriptor
getFD()
返回FileDescriptor
对象,该对象表示与此FileInputStream
正在使用的文件系统中的实际文件的连接。int
read()
从此输入流中读取一个字节的数据。int
read(byte[] b)
从此输入流b.length
最多b.length
字节的数据读b.length
字节数组。int
read(byte[] b, int off, int len)
从此输入流len
最多len
字节的数据读入一个字节数组。long
skip(long n)
跳过并从输入流中丢弃n
字节的数据。-
声明方法的类 java.io.InputStream
mark, markSupported, nullInputStream, readAllBytes, readNBytes, readNBytes, reset, transferTo
-
-
-
-
构造方法详细信息
-
FileInputStream
public FileInputStream(String name) throws FileNotFoundException
通过打开与实际文件的连接来创建FileInputStream
,该文件由文件系统中的路径名name
命名。 创建一个新的FileDescriptor
对象来表示此文件连接。首先,如果有安全管理器,则使用
name
参数作为其参数调用其checkRead
方法。如果指定的文件不存在,则是目录而不是常规文件,或者由于某些其他原因无法打开以进行读取,则抛出
FileNotFoundException
。- 参数
-
name
- 与系统相关的文件名。 - 异常
-
FileNotFoundException
- 如果文件不存在,则是目录而不是常规文件,或者由于某些其他原因无法打开进行读取。 -
SecurityException
- 如果存在安全管理器且其checkRead
方法拒绝对该文件的读访问权。 - 另请参见:
-
SecurityManager.checkRead(java.lang.String)
-
FileInputStream
public FileInputStream(File file) throws FileNotFoundException
通过打开与实际文件的连接来创建FileInputStream
,该文件由文件系统中的File
对象file
命名。 创建一个新的FileDescriptor
对象来表示此文件连接。首先,如果有安全管理器,则调用其
checkRead
方法,并将file
参数表示的路径作为其参数。如果指定的文件不存在,则是目录而不是常规文件,或者由于某些其他原因无法打开以进行读取,则抛出
FileNotFoundException
。- 参数
-
file
- 要打开以供阅读的文件。 - 异常
-
FileNotFoundException
- 如果文件不存在,则是目录而不是常规文件,或者由于某些其他原因无法打开进行读取。 -
SecurityException
- 如果存在安全管理器且其checkRead
方法拒绝对该文件的读访问权。 - 另请参见:
-
File.getPath()
,SecurityManager.checkRead(java.lang.String)
-
FileInputStream
public FileInputStream(FileDescriptor fdObj)
使用文件描述符fdObj
创建FileInputStream
,该文件描述符表示与文件系统中实际文件的现有连接。如果有安全管理器,则调用其
checkRead
方法,并将文件描述符fdObj
作为其参数,以查看是否可以读取文件描述符。 如果拒绝对文件描述符进行读访问,则抛出SecurityException
。如果
fdObj
为null,则抛出NullPointerException
。如果
fdObj
是invalid
,则此构造函数不会引发异常。 但是,如果在结果流上调用方法以在流上尝试I / O,则抛出IOException
。- 参数
-
fdObj
- 要打开以供阅读的文件描述符。 - 异常
-
SecurityException
- 如果存在安全管理器且其checkRead
方法拒绝对文件描述符的读访问权。 - 另请参见:
-
SecurityManager.checkRead(java.io.FileDescriptor)
-
-
方法详细信息
-
read
public int read() throws IOException
从此输入流中读取一个字节的数据。 如果尚未提供输入,此方法将阻止。- Specified by:
-
read
在类InputStream
- 结果
- 数据的下一个字节,如果到达文件的末尾,
-1
。 - 异常
-
IOException
- 如果发生I / O错误。
-
read
public int read(byte[] b) throws IOException
从此输入流b.length
最多b.length
个字节的数据读入一个字节数组。 此方法将阻塞,直到某些输入可用。- 重写:
-
read
类InputStream
- 参数
-
b
- 读取数据的缓冲区。 - 结果
- 读入缓冲区的总字节数,如果由于文件末尾已到达而没有更多数据,
-1
。 - 异常
-
IOException
- 如果发生I / O错误。 - 另请参见:
-
InputStream.read(byte[], int, int)
-
read
public int read(byte[] b, int off, int len) throws IOException
从此输入流len
最多len
字节的数据读入一个字节数组。 如果len
不为零,则该方法将阻塞,直到某些输入可用; 否则,不读取任何字节,返回0
。- 重写:
-
read
在类InputStream
- 参数
-
b
- 读取数据的缓冲区。 -
off
- 目标阵列b
的起始偏移量 -
len
- 读取的最大字节数。 - 结果
- 读入缓冲区的总字节数,如果由于文件末尾已到达而没有更多数据,
-1
。 - 异常
-
NullPointerException
- 如果b
是null
。 -
IndexOutOfBoundsException
- 如果off
为负数,len
为负数,或者len
为大于b.length - off
-
IOException
- 如果发生I / O错误。 - 另请参见:
-
InputStream.read()
-
skip
public long skip(long n) throws IOException
跳过并从输入流中丢弃n
字节的数据。出于各种原因,
skip
方法可能最终跳过一些较小数量的字节,可能是0
。 如果n
为负数,则该方法将尝试向后跳过。 如果后备文件不支持在其当前位置向后跳过,则抛出IOException
。 返回跳过的实际字节数。 如果它向前跳过,则返回正值。 如果它向后跳过,则返回负值。此方法可能会跳过比后备文件中剩余的更多的字节。 这不会产生异常,跳过的字节数可能包括超出后备文件EOF的一些字节数。 跳过结束后尝试从流中读取将导致-1表示文件结束。
- 重写:
-
skip
类InputStream
- 参数
-
n
- 要跳过的字节数。 - 结果
- 跳过的实际字节数。
- 异常
-
IOException
- 如果n为负数,如果流不支持搜索,或者发生I / O错误。
-
available
public int available() throws IOException
返回可以从此输入流中读取(或跳过)的剩余字节数的估计值,而不会被下一次调用此输入流的方法阻塞。 当文件位置超出EOF时返回0。 下一次调用可能是同一个线程或另一个线程。 单个读取或跳过这么多字节不会阻塞,但可以读取或跳过更少的字节。在某些情况下,非阻塞读取(或跳过)可能在速度很慢时似乎被阻止,例如在通过慢速网络读取大型文件时。
- 重写:
-
available
在类InputStream
- 结果
- 估计可以从此输入流中无阻塞地读取(或跳过)的剩余字节数。
- 异常
-
IOException
- 如果通过调用close
关闭此文件输入流或发生I / O错误。
-
close
public void close() throws IOException
关闭此文件输入流并释放与该流关联的所有系统资源。如果此流具有关联的频道,则该频道也将关闭。
- Specified by:
-
close
在界面AutoCloseable
- Specified by:
-
close
,界面Closeable
- 重写:
-
close
在类InputStream
- API Note:
- 仅当直接调用或通过try-with-resources调用时,覆盖
close()
才能执行清理操作是可靠的。 不要依赖于最终化来调用close
; 最终确定不可靠并且已被弃用。 如果需要清理本机资源,则应使用其他机制,如Cleaner 。 - 异常
-
IOException
- 如果发生I / O错误。
-
getFD
public final FileDescriptor getFD() throws IOException
返回FileDescriptor
对象,该对象表示与此FileInputStream
正在使用的文件系统中的实际文件的连接。- 结果
- 与此流关联的文件描述符对象。
- 异常
-
IOException
- 如果发生I / O错误。 - 另请参见:
-
FileDescriptor
-
getChannel
public FileChannel getChannel()
返回与此文件输入流关联的唯一FileChannel
对象。返回通道的初始
position
将等于到目前为止从文件读取的字节数。 从此流中读取字节将增加通道的位置。 通过显式或通过读取更改通道的位置将更改此流的文件位置。- 结果
- 与此文件输入流关联的文件通道
- 从以下版本开始:
- 1.4
-
finalize
@Deprecated(since="9", forRemoval=true)protected void finalize() throws IOException
Deprecated, for removal: This API element is subject to removal in a future version.Thefinalize
method has been deprecated and will be removed. Subclasses that overridefinalize
in order to perform cleanup should be modified to use alternative cleanup mechanisms and to remove the overridingfinalize
method. When overriding thefinalize
method, its implementation must explicitly ensure thatsuper.finalize()
is invoked as described inObject.finalize()
. See the specification forObject.finalize()
for further information about migration options.确保在没有更多引用时调用此文件输入流的close()
方法。finalize()
方法不直接调用close()
。
-
-