Module java.base
Package java.io

Class 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语句。
实现要求:
子类负责清理子类获取的资源。需要在流变得不可达后进行资源清理的子类应使用Cleaner或其他机制。
自从:
1.0
参见:
  • Constructor Summary

    Constructors
    Constructor
    Description
    创建一个文件输出流以写入由指定的File对象表示的文件。
    创建一个文件输出流以写入表示文件系统中实际文件的现有连接的指定文件描述符。
    FileOutputStream(File file, boolean append)
    创建一个文件输出流以写入由指定的File对象表示的文件。
    创建一个文件输出流以写入具有指定名称的文件。
    FileOutputStream(String name, boolean append)
    创建一个文件输出流以写入具有指定名称的文件。
  • Method Summary

    Modifier and Type
    Method
    Description
    void
    close()
    关闭此文件输出流并释放与此流关联的任何系统资源。
    返回与此文件输出流关联的唯一FileChannel对象。
    getFD()
    返回与此流关联的文件描述符。
    void
    write(byte[] b)
    将指定的字节数组中的b.length字节写入此文件输出流。
    void
    write(byte[] b, int off, int len)
    从指定的字节数组中的偏移量off开始,将len字节写入此文件输出流。
    void
    write(int b)
    将指定的字节写入此文件输出流。

    Methods declared in class java.io.OutputStream

    flush, nullOutputStream

    Methods declared in class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Constructor Details

    • FileOutputStream

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

      首先,如果存在安全管理器,则将name作为参数调用其checkWrite方法。

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

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

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

      首先,如果存在安全管理器,则将name作为参数调用其checkWrite方法。

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

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

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

      首先,如果存在安全管理器,则将file参数表示的路径作为参数调用其checkWrite方法。

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

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

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

      首先,如果存在安全管理器,则将file参数表示的路径作为参数调用其checkWrite方法。

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

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

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

      首先,如果存在安全管理器,则将文件描述符fdObj作为参数调用其checkWrite方法。

      如果fdObj为null,则会抛出NullPointerException

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

      参数:
      fdObj - 要打开以进行写入的文件描述符
      抛出:
      SecurityException - 如果存在安全管理器且其checkWrite方法拒绝对文件描述符的写访问
      参见:
  • Method Details

    • write

      public void write(int b) throws IOException
      将指定的字节写入此文件输出流。实现了OutputStream中的write方法。
      指定者:
      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注释:
      重写close()以执行清理操作只有在直接调用或通过try-with-resources调用时才是可靠的。
      实现要求:
      需要在流变得不可达后进行资源清理的子类应使用Cleaner机制。

      如果此流有关联的通道,则此方法将关闭通道,进而关闭此流。重写此方法的子类应准备处理可能的重入调用。

      抛出:
      IOException - 如果发生I/O错误。
    • getFD

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

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

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

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