Module  java.base
软件包  java.io

Class FileOutputStream

  • All Implemented Interfaces:
    CloseableFlushableAutoCloseable


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

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

    从以下版本开始:
    1.0
    另请参见:
    FileFileDescriptorFileInputStreamFiles.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)
      将指定的字节写入此文件输出流。
    • 构造方法详细信息

      • 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()SecurityExceptionSecurityManager.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()SecurityExceptionSecurityManager.checkWrite(java.lang.String)
      • FileOutputStream

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

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

        如果fdObj为null,则抛出一个NullPointerException

        如果fdObjinvalid这个构造函数不会抛出异常。 但是,如果在结果流上调用方法来尝试流上的I / O, IOException抛出一个IOException

        参数
        fdObj - 要打开来写入的文件描述符
        异常
        SecurityException - 如果存在安全管理员,并且其 checkWrite方法拒绝对文件描述符的写入访问
        另请参见:
        SecurityManager.checkWrite(java.io.FileDescriptor)
    • 方法详细信息

      • write

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

        public void write​(byte[] b,
                          int off,
                          int len)
                   throws IOException
        len字节从指定的字节数组开始,从偏移量 off开始写入此文件输出流。
        重写:
        writeOutputStream
        参数
        b - 数据。
        off - 数据中的起始偏移量。
        len - 要写入的字节数。
        异常
        IOException - 如果发生I / O错误。
      • close

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

        如果该流具有相关联的信道,则该信道也被关闭。

        Specified by:
        close在接口 AutoCloseable
        Specified by:
        close在接口 Closeable
        重写:
        closeOutputStream
        异常
        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方法。
        重写:
        finalizeObject
        异常
        IOException - 如果发生I / O错误。
        另请参见:
        FileInputStream.close()