- java.lang.Object
-
- java.io.InputStream
-
- java.io.FileInputStream
-
- All Implemented Interfaces:
-
Closeable
,AutoCloseable
public class FileInputStream extends InputStream
AFileInputStream
从文件系统中的文件获取输入字节。 什么文件可用取决于主机环境。FileInputStream
用于读取诸如图像数据的原始字节流。 要阅读字符流,请考虑使用FileReader
。- 从以下版本开始:
- 1.0
- 另请参见:
-
File
,FileDescriptor
,FileOutputStream
,Files.newInputStream(java.nio.file.Path, java.nio.file.OpenOption...)
-
-
构造方法摘要
构造方法 Constructor 描述 FileInputStream(File file)
通过打开与实际文件的连接来创建一个FileInputStream
,该文件由文件系统中的File
对象file
命名。FileInputStream(FileDescriptor fdObj)
通过使用文件描述符fdObj
创建FileInputStream
,该文件描述符表示与文件系统中的实际文件的现有连接。FileInputStream(String name)
通过打开与实际文件的连接来创建一个FileInputStream
,该文件由文件系统中的路径名name
命名。
-
方法摘要
所有方法 接口方法 具体的方法 弃用的方法 Modifier and Type 方法 描述 int
available()
返回从此输入流中可以读取(或跳过)的剩余字节数的估计值,而不会被下一次调用此输入流的方法阻塞。void
close()
关闭此文件输入流并释放与流相关联的任何系统资源。protected void
finalize()
已过时。finalize
方法已被弃用。 为了执行清理而覆盖finalize
子类应该修改为使用替代清理机制,并删除覆盖的finalize
方法。 当覆盖finalize
方法时,其实现必须明确确保按照super.finalize()
所述调用super.finalize() 。 有关迁移选项的更多信息,请参阅Object.finalize()
的规范。FileChannel
getChannel()
返回与此文件输入流相关联的唯一的FileChannel
对象。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 inherited from class java.io.InputStream
mark, markSupported, readAllBytes, readNBytes, reset, transferTo
-
-
-
-
构造方法详细信息
-
FileInputStream
public FileInputStream(String name) throws FileNotFoundException
通过打开与实际文件的连接创建一个FileInputStream
,该文件由文件系统中的路径名称为name
命名。 创建一个新的FileDescriptor
对象来表示此文件连接。首先,如果有一个安全管理器,它的
checkRead
方法是以name
参数作为参数来调用的。如果命名文件不存在,是一个目录而不是常规文件,或者由于某些其他原因无法打开读取,因此抛出一个
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
则抛出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
个字节的数据为字节数组。 此方法将阻塞,直到某些输入可用。- 重写:
-
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
不为零,则该方法将阻塞,直到某些输入可用; 否则,不会读取字节,并返回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
- 异常
-
IOException
- 如果发生I / O错误。
-
getFD
public final FileDescriptor getFD() throws IOException
返回表示与此FileInputStream
正在使用的文件系统中的实际文件的连接的FileDescriptor
对象。- 结果
- 与此流关联的文件描述符对象。
- 异常
-
IOException
- 如果发生I / O错误。 - 另请参见:
-
FileDescriptor
-
getChannel
public FileChannel getChannel()
返回与此文件输入流相关联的唯一的FileChannel
对象。到目前为止 ,返回通道的初始值为
position
将等于从文件读取的字节数。 从该流读取字节将增加通道的位置。 通过显式地或通过阅读来改变频道的位置将会改变这个流的文件位置。- 结果
- 与此文件输入流关联的文件通道
- 从以下版本开始:
- 1.4
-
finalize
@Deprecated(since="9") protected void finalize() throws IOException
已过时。finalize
方法已被弃用。 为了执行清理,覆盖finalize
子类应被修改为使用替代的清理机制并删除覆盖的finalize
方法。 当覆盖finalize
方法时,其实现必须明确确保按照super.finalize()
中所述调用super.finalize() 。 有关迁移选项的更多信息,请参阅Object.finalize()
的规范。确保当这个文件输入流的close
方法没有更多的引用时被调用。- 重写:
-
finalize
在Object
- 异常
-
IOException
- 如果发生I / O错误。 - 另请参见:
-
close()
-
-