public class FileInputStream extends InputStream
FileInputStream
从文件系统中的文件获取输入字节。
什么文件可用取决于主机环境。
FileInputStream
用于读取诸如图像数据的原始字节流。 要阅读字符串,请考虑使用FileReader
。
File
, FileDescriptor
, FileOutputStream
, Files.newInputStream(java.nio.file.Path, java.nio.file.OpenOption...)
Constructor and Description |
---|
FileInputStream(File file)
通过打开与实际文件的连接创建一个
FileInputStream ,该文件由文件系统中的
File 对象
file 命名。
|
FileInputStream(FileDescriptor fdObj)
创建
FileInputStream 通过使用文件描述符
fdObj ,其表示在文件系统中的现有连接到一个实际的文件。
|
FileInputStream(String name)
通过打开与实际文件的连接来创建一个
FileInputStream ,该文件由文件系统中的路径名
name 命名。
|
Modifier and Type | Method and Description |
---|---|
int |
available()
返回从此输入流中可以读取(或跳过)的剩余字节数的估计值,而不会被下一次调用此输入流的方法阻塞。
|
void |
close()
关闭此文件输入流并释放与流相关联的任何系统资源。
|
protected void |
finalize()
确保当这个文件输入流的
close 方法没有更多的引用时被调用。
|
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 字节的数据。
|
mark, markSupported, reset
public FileInputStream(String name) throws FileNotFoundException
FileInputStream
文件,该文件由文件系统中的路径名name
命名。
创建一个新的FileDescriptor
对象来表示此文件连接。
首先,如果有一个安全管理器,它的checkRead
方法被调用与name
参数作为其参数。
如果命名文件不存在,则是一个目录而不是常规文件,或者由于某些其他原因无法打开读取,因此抛出一个FileNotFoundException
。
name
- 与系统相关的文件名。
FileNotFoundException
- 如果文件不存在,是一个目录而不是常规文件,或者由于某些其他原因无法打开阅读。
SecurityException
- 如果安全管理器存在,并且其
checkRead
方法拒绝对该文件的读取访问。
SecurityManager.checkRead(java.lang.String)
public FileInputStream(File file) throws FileNotFoundException
FileInputStream
,该文件由文件系统中的File
对象file
命名。
创建一个新的FileDescriptor
对象来表示此文件连接。
首先,如果有一个安全管理器,它的checkRead
方法file
参数表示的路径作为参数来调用。
如果命名文件不存在,则是一个目录而不是常规文件,或者由于某些其他原因无法打开读取,因此抛出一个FileNotFoundException
。
file
- 要打开阅读的文件。
FileNotFoundException
- 如果文件不存在,是一个目录而不是常规文件,或者由于某些其他原因无法打开阅读。
SecurityException
- 如果安全管理器存在,并且其
checkRead
方法拒绝对该文件的读取访问。
File.getPath()
,
SecurityManager.checkRead(java.lang.String)
public FileInputStream(FileDescriptor fdObj)
FileInputStream
通过使用文件描述符fdObj
,其表示在文件系统中的现有连接到一个实际的文件。
如果有安全管理器,则调用其checkRead
方法,文件描述符fdObj
作为参数,以查看是否可以读取文件描述符。 如果文件描述符被拒绝读访问,则抛出一个SecurityException
。
如果fdObj
为null,则抛出NullPointerException
。
如果fdObj
是invalid
,那么这个构造函数不会抛出异常 。 但是,如果在结果流上调用方法来尝试流上的I / O,则会抛出一个IOException
。
fdObj
- 要打开阅读的文件描述符。
SecurityException
- 如果安全管理器存在,并且其
checkRead
方法拒绝对
checkRead
读取访问。
SecurityManager.checkRead(java.io.FileDescriptor)
public int read() throws IOException
read
在
InputStream
-1
。
IOException
- 如果发生I / O错误。
public int read(byte[] b) throws IOException
b.length
字节的数据到字节数组。
此方法将阻塞,直到某些输入可用。
read
在
InputStream
类
b
- 读取数据的缓冲区。
-1
。
IOException
- 如果发生I / O错误。
InputStream.read(byte[], int, int)
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()
public long skip(long n) throws IOException
n
个字节的数据。
由于各种原因, skip
方法可能会跳过一些较小数量的字节,可能是0
。 如果n
为负,则该方法将尝试向后跳。 如果后台文件不支持其当前位置的向后跳过,则会抛出IOException
。 返回实际跳过的字节数。 如果它向前跳,它返回一个正值。 如果它向后跳,它返回一个负值。
该方法可能会跳过比后备文件中剩余的字节更多的字节。 这不会产生异常,并且跳过的字节数可能包括超出后台文件的EOF的一些字节数。 尝试在跳过结束后从流中读取将导致-1表示文件的结尾。
skip
在
InputStream
n
- 要跳过的字节数。
IOException
- 如果n为负,如果流不支持查询,或者发生I / O错误。
public int available() throws IOException
在某些情况下,非阻塞读取(或跳过)在缓慢时可能会被阻止,例如在慢速网络中读取大文件时。
available
在
InputStream
IOException
- 如果此文件输入流已通过调用
close
关闭或发生I / O错误。
public void close() throws IOException
如果该流具有相关联的信道,则该信道也被关闭。
close
在接口
Closeable
close
在界面
AutoCloseable
close
在
InputStream
类
IOException
- 如果发生I / O错误。
public final FileDescriptor getFD() throws IOException
FileDescriptor
对象,表示与该FileInputStream正在使用的文件系统中的实际文件的
FileInputStream
。
IOException
- 如果发生I / O错误。
FileDescriptor
public FileChannel getChannel()
FileChannel
对象。
返回通道的初始position
将等于从文件读取的字节数到目前为止。 从该流读取字节将增加通道的位置。 通过显式地或通过阅读来改变频道的位置将会改变这个流的文件位置。
protected void finalize() throws IOException
close
方法。
finalize
在
Object
类
IOException
- 如果发生I / O错误。
close()