模块  java.base
软件包  java.io

Class FileOutputStream

  • 实现的所有接口
    CloseableFlushableAutoCloseable

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

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

    API Note:
    要释放此流使用的资源,应直接或通过try-with-resources调用close() 子类负责清理子类获取的资源。 应修改覆盖finalize()以执行清理的子类,以使用备用清理机制(如Cleaner并删除重写finalize方法。
    实现要求:
    如果这个FileOutputStream中已经子类和close()方法已被重写,该close()时的FileInputStream不可达的方法将被调用。 否则,具体实现如何执行close()描述的资源清理。
    从以下版本开始:
    1.0
    另请参见:
    FileFileDescriptorFileInputStreamFiles.newOutputStream(java.nio.file.Path, java.nio.file.OpenOption...)
    • 构造方法详细信息

      • FileOutputStream

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

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

        如果文件存在但是是目录而不是常规文件,则不存在但无法创建,或者由于任何其他原因无法打开,则抛出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作为参数调用其checkWrite方法。

        如果文件存在但是是目录而不是常规文件,不存在但无法创建,或者由于任何其他原因无法打开,则抛出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)
        创建要写入指定文件描述符的文件输出流,该文件描述符表示与文件系统中实际文件的现有连接。

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

        如果fdObj为null,则抛出NullPointerException

        如果fdObjinvalid则此构造函数不会引发异常。 但是,如果在结果流上调用方法以在流上尝试I / O,则抛出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,
                          int off,
                          int len)
                   throws IOException
        将从偏移量为 off的指定字节数组中的 len字节写入此文件输出流。
        重写:
        writeOutputStream
        参数
        b - 数据。
        off - 数据中的起始偏移量。
        len - 要写入的字节数。
        异常
        IOException - 如果发生I / O错误。
      • close

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

        如果此流具有关联的频道,则该频道也将关闭。

        Specified by:
        close在界面 AutoCloseable
        Specified by:
        close在界面 Closeable
        重写:
        closeOutputStream
        API Note:
        仅当直接调用或通过try-with-resources调用时,重写close()才能执行清理操作。 不要依赖于最终化来调用close ; 最终确定不可靠并且已被弃用。 如果需要清理本机资源,则应使用其他机制,如Cleaner
        异常
        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",
                    forRemoval=true)
        protected void finalize()
                         throws IOException
        Deprecated, for removal: This API element is subject to removal in a future version.
        The finalize method has been deprecated and will be removed. Subclasses that override finalize in order to perform cleanup should be modified to use alternative cleanup mechanisms and to remove the overriding finalize method. When overriding the finalize method, its implementation must explicitly ensure that super.finalize() is invoked as described in Object.finalize(). See the specification for Object.finalize() for further information about migration options.
        清除与文件的连接,并确保在没有对此流的更多引用时调用此文件输出流的close()方法。 finalize()方法不直接调用close()
        重写:
        finalize在类 Object
        API Note:
        要释放此流使用的资源,应直接或通过try-with-resources调用 close()
        实现要求:
        如果这个FileOutputStream中已经子类和close()方法已被重写,该close()当FileOutputStream中是无法访问的方法将被调用。 否则,具体实现如何执行close()描述的资源清理。
        异常
        IOException - 如果发生I / O错误。
        另请参见:
        FileInputStream.close()