- java.lang.Object
-
- java.io.OutputStream
-
- java.io.FileOutputStream
-
- 实现的所有接口
-
Closeable
,Flushable
,AutoCloseable
public class FileOutputStream extends OutputStream
文件输出流是用于将数据写入File
或FileDescriptor
的输出流。 文件是否可用或是否可以创建取决于底层平台。 特别是某些平台允许一次仅打开一个文件以供写入FileOutputStream
(或其他文件写入对象)。 在这种情况下,如果涉及的文件已经打开,则此类中的构造函数将失败。FileOutputStream
用于写入诸如图像数据的原始字节流。 要编写字符流,请考虑使用FileWriter
。- API Note:
-
要释放此流使用的资源,应直接或通过try-with-resources调用
close()
。 子类负责清理子类获取的资源。 应修改覆盖finalize()
以执行清理的子类,以使用备用清理机制(如Cleaner
)并删除重写finalize
方法。 - 实现要求:
-
如果这个FileOutputStream中已经子类和
close()
方法已被重写,该close()
时的FileInputStream不可达的方法将被调用。 否则,具体实现如何执行close()
中描述的资源清理。 - 从以下版本开始:
- 1.0
- 另请参见:
-
File
,FileDescriptor
,FileInputStream
,Files.newOutputStream(java.nio.file.Path, java.nio.file.OpenOption...)
-
-
构造方法摘要
构造方法 构造器 描述 FileOutputStream(File file)
创建文件输出流以写入由指定的File
对象表示的文件。FileOutputStream(FileDescriptor fdObj)
创建要写入指定文件描述符的文件输出流,该文件描述符表示与文件系统中实际文件的现有连接。FileOutputStream(File file, boolean append)
创建文件输出流以写入由指定的File
对象表示的文件。FileOutputStream(String name)
创建文件输出流以写入具有指定名称的文件。FileOutputStream(String name, boolean append)
创建文件输出流以写入具有指定名称的文件。
-
方法摘要
所有方法 实例方法 具体的方法 弃用的方法 变量和类型 方法 描述 void
close()
关闭此文件输出流并释放与此流关联的所有系统资源。protected void
finalize()
不推荐使用,要删除:此API元素将在以后的版本中删除。finalize
方法已被弃用,将被删除。FileChannel
getChannel()
返回与此文件输出流关联的唯一FileChannel
对象。FileDescriptor
getFD()
返回与此流关联的文件描述符。void
write(byte[] b)
将指定字节数组中的b.length
字节写入此文件输出流。void
write(byte[] b, int off, int len)
将从偏移量off
开始的指定字节数组中的len
字节写入此文件输出流。void
write(int b)
将指定的字节写入此文件输出流。-
声明方法的类 java.io.OutputStream
flush, nullOutputStream
-
-
-
-
构造方法详细信息
-
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()
,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)
创建要写入指定文件描述符的文件输出流,该文件描述符表示与文件系统中实际文件的现有连接。首先,如果有安全管理器,则使用文件描述符
fdObj
参数作为其参数调用其checkWrite
方法。如果
fdObj
为null,则抛出NullPointerException
。如果
fdObj
是invalid
,则此构造函数不会引发异常。 但是,如果在结果流上调用方法以在流上尝试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) 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
将从偏移量为off
的指定字节数组中的len
字节写入此文件输出流。- 重写:
-
write
类OutputStream
- 参数
-
b
- 数据。 -
off
- 数据中的起始偏移量。 -
len
- 要写入的字节数。 - 异常
-
IOException
- 如果发生I / O错误。
-
close
public void close() throws IOException
关闭此文件输出流并释放与此流关联的所有系统资源。 此文件输出流可能不再用于写入字节。如果此流具有关联的频道,则该频道也将关闭。
- Specified by:
-
close
在界面AutoCloseable
- Specified by:
-
close
在界面Closeable
- 重写:
-
close
类OutputStream
- 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.Thefinalize
method has been deprecated and will be removed. Subclasses that overridefinalize
in order to perform cleanup should be modified to use alternative cleanup mechanisms and to remove the overridingfinalize
method. When overriding thefinalize
method, its implementation must explicitly ensure thatsuper.finalize()
is invoked as described inObject.finalize()
. See the specification forObject.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()
-
-