前几节我们学习了文件字节输入流,那么既然有文件字节输入流,自然也有相对应的文件字节输出流,这一节我们就来学习文件字节输出流。


使用输出流通常包括4个基本步骤:

(1) 给出输出流的目的地

(2) 创建指向目的地的输出流

(3) 让输出流把数据写入到目的地

(4) 关闭输出流


本节通过学习文件字节输出流熟悉上述4个基本步骤。


如果对文件写入需求比较简单,那么可以使用FileOutputStream类(文件字节输出流),它是OutputStream类的子类(以字节为单位向文件写入内容),该类的实例方法都是从OutputStream类继承来的。


我们可以使用FileOutputStream类的下列具有刷新功能的构造方法创建指向文件的输出流。

FileOutputStream(String name);
FileOutputStream(File file);



第一个构造方法使用给定的文件名name创建FileOutputStream流;第二个构造方法使用File对象创建FileOutputStream流。参数name和file指定的文件称为输出流的目的地。


FileOutputStream输出流开通一个到达文件的通道(目的地就是这个文件,输出流指向这个文件)。


注意:如果输出流指向的文件不存在,Java就会创建该文件,如果指向的文件是已存在的文件,输出流将刷新该文件(使得文件的长度为0)。


除此之外,与创建输入流相同的是,创建输出流时,可能会出现错误(被称为异常),例如,输出流试图要写入的文件可能不允许操作或有其他受限等原因。所以必须在try-catch语句中的try块部分创建输出流,在catch块部分检测并处理这个异常。


例如,创建指向名为destin.txt的输出流out:

try {
    FileOutputStream out = new FileoutputStream("destin.txt"); //创建指向文件destin.txt的输出流
}
catch(IOException e) {
    System.out.println("File write error:"+e);
}

File f = new File("destin.txt"); //指定输出流的目的地
try {
    FileOutputStream out = new FileOutputStream(f); //创建指向目的地的输出流
}
catch(IOException e) {
    System.out.println("Filewrite:"+e);
}


我们可以使用FileOutputStream类的下列能选择是否具有刷新功能的构造方法创建指向文件的输出流。

FileOutputStream(String name,boolean append);
FileOutputStream(File file,boolean append);


当用构造方法创建指向一个文件的输出流时,如果参数append取值true,输出流不会刷新所指向的文件(假如文件已存在),输出流的write的方法将从文件的末尾开始向文件写入数据,参数append取值false,输出流将刷新所指向的文件(假如文件已经存在)。


点赞(0)

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

Dotcpp在线编译      (登录可减少运行等待时间)