- java.lang.Object
-
- java.io.OutputStream
-
- java.io.FileOutputStream
-
- All Implemented Interfaces:
-
Closeable
,Flushable
,AutoCloseable
public class FileOutputStream extends OutputStream
文件输出流是用于将数据写入File
或FileDescriptor
的输出流。 文件是否可用或可能被创建取决于底层平台。 特别是某些平台允许一次只能打开一个文件来写入一个FileOutputStream
(或其他文件写入对象)。 在这种情况下,如果所涉及的文件已经打开,则此类中的构造函数将失败。FileOutputStream
用于写入诸如图像数据的原始字节流。 要编写字符流,请考虑使用FileWriter
。- 从以下版本开始:
- 1.0
- 另请参见:
-
File
,FileDescriptor
,FileInputStream
,Files.newOutputStream(java.nio.file.Path, java.nio.file.OpenOption...)
-
-
构造方法摘要
构造方法 Constructor 描述 FileOutputStream(File file)
创建文件输出流以写入由指定的File
对象表示的文件。FileOutputStream(FileDescriptor fdObj)
创建文件输出流以写入指定的文件描述符,表示与文件系统中实际文件的现有连接。FileOutputStream(File file, boolean append)
创建文件输出流以写入由指定的File
对象表示的文件。FileOutputStream(String name)
创建文件输出流以指定的名称写入文件。FileOutputStream(String name, boolean append)
创建文件输出流以指定的名称写入文件。
-
方法摘要
所有方法 接口方法 具体的方法 弃用的方法 Modifier and Type 方法 描述 void
close()
关闭此文件输出流并释放与此流相关联的任何系统资源。protected void
finalize()
已过时。finalize
方法已被弃用。 为了执行清理,覆盖finalize
子类应被修改为使用替代的清理机制,并删除覆盖的finalize
方法。 当覆盖finalize
方法时,其实现必须明确确保按照super.finalize()
中所述调用super.finalize() 。 有关迁移选项的更多信息,请参阅Object.finalize()
的规范。FileChannel
getChannel()
返回与此文件输出流相关联的唯一的FileChannel
对象。FileDescriptor
getFD()
返回与此流相关联的文件描述符。void
write(byte[] b)
将b.length
字节从指定的字节数组写入此文件输出流。void
write(byte[] b, int off, int len)
将len
字节从指定的字节数组开始,从偏移量off
开始写入此文件输出流。void
write(int b)
将指定的字节写入此文件输出流。-
Methods inherited from class java.lang.Object
clone, equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from class java.io.OutputStream
flush
-
-
-
-
构造方法详细信息
-
FileOutputStream
public FileOutputStream(String name) throws FileNotFoundException
创建文件输出流以指定的名称写入文件。 将创建一个新的FileDescriptor
对象来表示此文件连接。首先,如果有一个安全管理器,它的
checkWrite
方法是以name
作为参数来调用的。如果文件存在但是是一个目录而不是常规文件,则不存在但不能创建,或者由于任何其他原因无法打开该
FileNotFoundException
因此抛出一个FileNotFoundException
。- 实现要求:
-
使用参数
name
调用此构造函数等效于调用new FileOutputStream(name, false)
。 - 参数
-
name
- 与系统相关的文件名 - 异常
-
FileNotFoundException
- 如果文件存在但是是一个目录而不是常规文件,不存在但不能创建,或者由于任何其他原因无法打开 -
SecurityException
- 如果安全管理器存在,并且其checkWrite
方法拒绝对该文件的写入访问。 - 另请参见:
-
SecurityManager.checkWrite(java.lang.String)
-
FileOutputStream
public FileOutputStream(String name, boolean append) throws FileNotFoundException
创建文件输出流以指定的名称写入文件。 如果第二个参数为true
,则字节将写入文件的末尾而不是开头。 将创建一个新的FileDescriptor
对象来表示此文件连接。首先,如果有一个安全管理器,它的
checkWrite
方法将以name
作为参数来调用。如果文件存在但是是一个目录而不是常规文件,不存在但不能创建,或者由于任何其他原因无法打开,则抛出一个
FileNotFoundException
。- 参数
-
name
- 与系统相关的文件名 -
append
- 如果是true
,则字节将写入文件的末尾而不是开头 - 异常
-
FileNotFoundException
- 如果文件存在但是是一个目录而不是常规文件,不存在但不能创建,或由于任何其他原因无法打开。 -
SecurityException
- 如果安全管理器存在,并且其checkWrite
方法拒绝对该文件的写入访问。 - 从以下版本开始:
- 1.1
- 另请参见:
-
SecurityManager.checkWrite(java.lang.String)
-
FileOutputStream
public FileOutputStream(File file) throws FileNotFoundException
创建文件输出流以写入由指定的File
对象表示的文件。 创建一个新的FileDescriptor
对象来表示此文件连接。首先,如果有一个安全管理器,它的
checkWrite
方法被调用,由file
参数表示的路径作为其参数。如果文件存在但是是一个目录而不是常规文件,不存在但不能创建,或者由于任何其他原因无法打开,那么抛出一个
FileNotFoundException
。- 参数
-
file
- 要打开的文件写入。 - 异常
-
FileNotFoundException
- 如果文件存在但是是一个目录而不是常规文件,不存在但不能创建,或由于任何其他原因无法打开 -
SecurityException
- 如果安全管理器存在,并且其checkWrite
方法拒绝对该文件的写入访问。 - 另请参见:
-
File.getPath()
,SecurityException
,SecurityManager.checkWrite(java.lang.String)
-
FileOutputStream
public FileOutputStream(File file, boolean append) throws FileNotFoundException
创建文件输出流以写入由指定的File
对象表示的文件。 如果第二个参数为true
,则字节将写入文件的末尾而不是开头。 将创建一个新的FileDescriptor
对象来表示此文件连接。首先,如果有一个安全管理器,它的
checkWrite
方法被调用,由file
参数表示的路径作为其参数。如果文件存在但是是一个目录而不是常规文件,则不存在但不能创建,或者由于任何其他原因无法打开,因此抛出一个
FileNotFoundException
。- 参数
-
file
- 要打开的文件进行写入。 -
append
- 如果是true
,则字节将写入文件的末尾而不是开头 - 异常
-
FileNotFoundException
- 如果文件存在但是是一个目录而不是常规文件,则不存在但不能创建,或由于任何其他原因无法打开 -
SecurityException
- 如果安全管理器存在,并且其checkWrite
方法拒绝对该文件的写入访问。 - 从以下版本开始:
- 1.4
- 另请参见:
-
File.getPath()
,SecurityException
,SecurityManager.checkWrite(java.lang.String)
-
FileOutputStream
public FileOutputStream(FileDescriptor fdObj)
创建文件输出流以写入指定的文件描述符,表示与文件系统中实际文件的现有连接。首先,如果有一个安全管理器,它的
checkWrite
方法被调用与文件描述符fdObj
参数作为其参数。如果
fdObj
为null,则抛出一个NullPointerException
。如果
fdObj
是invalid
,这个构造函数不会抛出异常。 但是,如果在结果流上调用方法来尝试流上的I / O,IOException
抛出一个IOException
。- 参数
-
fdObj
- 要打开来写入的文件描述符 - 异常
-
SecurityException
- 如果存在安全管理员,并且其checkWrite
方法拒绝对文件描述符的写入访问 - 另请参见:
-
SecurityManager.checkWrite(java.io.FileDescriptor)
-
-
方法详细信息
-
write
public void write(int b) throws IOException
将指定的字节写入此文件输出流。 实现write
方法OutputStream
。- Specified by:
-
write
在OutputStream
- 参数
-
b
- 要写入的字节。 - 异常
-
IOException
- 如果发生I / O错误。
-
write
public void write(byte[] b) throws IOException
将b.length
字节从指定的字节数组写入此文件输出流。- 重写:
-
write
在OutputStream
- 参数
-
b
- 数据。 - 异常
-
IOException
- 如果发生I / O错误。 - 另请参见:
-
OutputStream.write(byte[], int, int)
-
write
public void write(byte[] b, int off, int len) throws IOException
将len
字节从指定的字节数组开始,从偏移量off
开始写入此文件输出流。- 重写:
-
write
在OutputStream
- 参数
-
b
- 数据。 -
off
- 数据中的起始偏移量。 -
len
- 要写入的字节数。 - 异常
-
IOException
- 如果发生I / O错误。
-
close
public void close() throws IOException
关闭此文件输出流并释放与此流相关联的任何系统资源。 此文件输出流可能不再用于写入字节。如果该流具有相关联的信道,则该信道也被关闭。
- Specified by:
-
close
在接口AutoCloseable
- Specified by:
-
close
在接口Closeable
- 重写:
-
close
在OutputStream
- 异常
-
IOException
- 如果发生I / O错误。
-
getFD
public final FileDescriptor getFD() throws IOException
返回与此流相关联的文件描述符。- 结果
-
FileDescriptor
对象,表示与该FileOutputStream
对象正在使用的文件系统中的文件的连接。 - 异常
-
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
有对此流的引用时调用此文件输出流的close
方法。- 重写:
-
finalize
在Object
- 异常
-
IOException
- 如果发生I / O错误。 - 另请参见:
-
FileInputStream.close()
-
-