模块 java.base
 java.io

类 FileOutputStream

java.lang.Object
java.io.OutputStream
java.io.FileOutputStream
所有已实现的接口:
Closeable , Flushable , AutoCloseable

public class FileOutputStream extends OutputStream
文件输出流是用于将数据写入 FileFileDescriptor 的输出流。文件是否可用或是否可以创建取决于底层平台。特别是某些平台,一次只允许一个FileOutputStream(或其他文件写入对象)打开一个文件进行写入。在这种情况下,如果涉及的文件已经打开,则此类中的构造函数将失败。

FileOutputStream 用于写入原始字节流,例如图像数据。要编写字符流,请考虑使用 FileWriter

API 注意:
要释放此流使用的资源,close() 应直接调用或通过 try-with-resources 调用。子类负责清理子类获取的资源。重写 Object.finalize() 以执行清理的子类应修改为使用替代清理机制,例如 Cleaner 并删除重写的 finalize 方法。
实现要求:
如果此 FileOutputStream 已被子类化并且 close() 方法已被重写,则当 FileInputStream 不可访问时,将调用 close() 方法。否则,如何执行 close() 中描述的资源清理是实现特定的。
自从:
1.0
参见:
  • 构造方法详细信息

    • FileOutputStream

      public FileOutputStream(String  name) throws FileNotFoundException
      创建文件输出流以写入具有指定名称的文件。创建一个新的 FileDescriptor 对象来表示此文件连接。

      首先,如果有一个安全管理器,它的 checkWrite 方法将以 name 作为参数调用。

      如果文件存在但是是目录而不是常规文件,不存在但无法创建,或者由于任何其他原因无法打开,则抛出 FileNotFoundException

      实现要求:
      使用参数 name 调用此构造函数等同于调用 new FileOutputStream(name, false)
      参数:
      name - 系统相关的文件名
      抛出:
      FileNotFoundException - 如果文件存在但是是目录而不是常规文件,不存在但无法创建,或者由于任何其他原因无法打开
      SecurityException - 如果安全管理器存在且其 checkWrite 方法拒绝对文件的写访问。
      参见:
    • FileOutputStream

      public FileOutputStream(String  name, boolean append) throws FileNotFoundException
      创建文件输出流以写入具有指定名称的文件。如果第二个参数是 true ,那么字节将被写入文件的末尾而不是开头。创建一个新的 FileDescriptor 对象来表示此文件连接。

      首先,如果有一个安全管理器,它的 checkWrite 方法将以 name 作为参数调用。

      如果文件存在但是是目录而不是常规文件,不存在但无法创建,或者由于任何其他原因无法打开,则抛出 FileNotFoundException

      参数:
      name - 系统相关的文件名
      append - 如果是 true ,则字节将写入文件末尾而不是开头
      抛出:
      FileNotFoundException - 如果文件存在但是是目录而不是常规文件,不存在但无法创建,或者由于任何其他原因无法打开。
      SecurityException - 如果安全管理器存在且其 checkWrite 方法拒绝对文件的写访问。
      自从:
      1.1
      参见:
    • FileOutputStream

      public FileOutputStream(File  file) throws FileNotFoundException
      创建文件输出流以写入由指定的 File 对象表示的文件。创建一个新的 FileDescriptor 对象来表示此文件连接。

      首先,如果有一个安全管理器,它的 checkWrite 方法被调用,以 file 参数表示的路径作为它的参数。

      如果文件存在但是是目录而不是常规文件,不存在但无法创建,或者由于任何其他原因无法打开,则抛出 FileNotFoundException

      参数:
      file - 为写入而打开的文件。
      抛出:
      FileNotFoundException - 如果文件存在但是是目录而不是常规文件,不存在但无法创建,或者由于任何其他原因无法打开
      SecurityException - 如果安全管理器存在且其 checkWrite 方法拒绝对文件的写访问。
      参见:
    • FileOutputStream

      public FileOutputStream(File  file, boolean append) throws FileNotFoundException
      创建文件输出流以写入由指定的 File 对象表示的文件。如果第二个参数是 true ,那么字节将被写入文件的末尾而不是开头。创建一个新的 FileDescriptor 对象来表示此文件连接。

      首先,如果有一个安全管理器,它的 checkWrite 方法被调用,以 file 参数表示的路径作为它的参数。

      如果文件存在但是是目录而不是常规文件,不存在但无法创建,或者由于任何其他原因无法打开,则抛出 FileNotFoundException

      参数:
      file - 为写入而打开的文件。
      append - 如果是 true ,则字节将写入文件末尾而不是开头
      抛出:
      FileNotFoundException - 如果文件存在但是是目录而不是常规文件,不存在但无法创建,或者由于任何其他原因无法打开
      SecurityException - 如果安全管理器存在且其 checkWrite 方法拒绝对文件的写访问。
      自从:
      1.4
      参见:
    • FileOutputStream

      public FileOutputStream(FileDescriptor  fdObj)
      创建一个文件输出流以写入指定的文件描述符,它表示与文件系统中实际文件的现有连接。

      首先,如果有一个安全管理器,它的 checkWrite 方法被调用,文件描述符 fdObj 参数作为它的参数。

      如果 fdObj 为空,则抛出 NullPointerException

      如果 fdObjinvalid ,则此构造函数不会抛出异常。但是,如果在结果流上调用这些方法以尝试在流上进行 I/O,则会抛出 IOException

      参数:
      fdObj - 为写入而打开的文件描述符
      抛出:
      SecurityException - 如果安全管理器存在且其 checkWrite 方法拒绝对文件描述符的写访问
      参见:
  • 方法详情

    • write

      public void write(int b) throws IOException
      将指定字节写入此文件输出流。实现 OutputStreamwrite 方法。
      指定者:
      write 在类 OutputStream
      参数:
      b - 要写入的字节。
      抛出:
      IOException - 如果发生 I/O 错误。
    • write

      public void write(byte[] b) throws IOException
      将指定字节数组中的 b.length 个字节写入此文件输出流。
      重写:
      write 在类 OutputStream
      参数:
      b - 数据。
      抛出:
      IOException - 如果发生 I/O 错误。
      参见:
    • write

      public void write(byte[] b, int off, int len) throws IOException
      从偏移量 off 开始的指定字节数组中将 len 字节写入此文件输出流。
      重写:
      write 在类 OutputStream
      参数:
      b - 数据。
      off - 数据中的起始偏移量。
      len - 要写入的字节数。
      抛出:
      IOException - 如果发生 I/O 错误。
      IndexOutOfBoundsException - 如果 off 为负,len 为负,或者 len 大于 b.length - off
    • close

      public void close() throws IOException
      关闭此文件输出流并释放与此流关联的所有系统资源。此文件输出流可能不再用于写入字节。

      如果此流有关联的通道,则该通道也会关闭。

      指定者:
      close 在接口 AutoCloseable
      指定者:
      close 在接口 Closeable
      重写:
      close 在类 OutputStream
      API 注意:
      只有在直接调用或通过 try-with-resources 调用时,覆盖 close() 以执行清理操作才是可靠的。不要依赖终结来调用 close ; finalization 不可靠,已弃用。如果需要清理本机资源,则应使用其他机制,例如 Cleaner
      抛出:
      IOException - 如果发生 I/O 错误。
    • getFD

      public final FileDescriptor  getFD() throws IOException
      返回与此流关联的文件描述符。
      返回:
      FileDescriptor 对象,表示与此 FileOutputStream 对象正在使用的文件系统中的文件的连接。
      抛出:
      IOException - 如果发生 I/O 错误。
      参见:
    • getChannel

      public FileChannel  getChannel()
      返回与此文件输出流关联的唯一 FileChannel 对象。

      返回通道的初始 position 将等于到目前为止写入文件的字节数,除非此流处于追加模式,在这种情况下它将等于文件的大小。将字节写入此流将相应地增加通道的位置。显式或通过写入更改通道的位置将更改此流的文件位置。

      返回:
      与此文件输出流关联的文件通道
      自从:
      1.4