前几节我们学习了文件字节输入流,那么既然有文件字节输入流,自然也有相对应的文件字节输出流,这一节我们就来学习文件字节输出流。
使用输出流通常包括4个基本步骤:
本节通过学习文件字节输出流熟悉上述4个基本步骤。
如果对文件写入需求比较简单,那么可以使用FileOutputStream类(文件字节输出流),它是OutputStream类的子类(以字节为单位向文件写入内容),该类的实例方法都是从OutputStream类继承来的。
我们可以使用FileOutputStream类的下列具有刷新功能的构造方法创建指向文件的输出流。
FileOutputStream(Stringname);FileOutputStream(Filefile);
第一个构造方法使用给定的文件名name创建FileOutputStream流;第二个构造方法使用File对象创建FileOutputStream流。参数name和file指定的文件称为输出流的目的地。
FileOutputStream输出流开通一个到达文件的通道(目的地就是这个文件,输出流指向这个文件)。
注意:如果输出流指向的文件不存在,Java就会创建该文件,如果指向的文件是已存在的文件,输出流将刷新该文件(使得文件的长度为0)。
除此之外,与创建输入流相同的是,创建输出流时,可能会出现错误(被称为异常),例如,输出流试图要写入的文件可能不允许操作或有其他受限等原因。所以必须在try-catch语句中的try块部分创建输出流,在catch块部分检测并处理这个异常。
例如,创建指向名为destin.txt的输出流out:
try{FileOutputStreamout=newFileoutputStream(destin.txt);//创建指向文件destin.txt的输出流}catch(IOExceptione){System.out.println(Filewriteerror:+e);}
或
Filef=newFile(destin.txt);//指定输出流的目的地try{FileOutputStreamout=newFileOutputStream(f);//创建指向目的地的输出流}catch(IOExceptione){System.out.println(Filewrite:+e);}
我们可以使用FileOutputStream类的下列能选择是否具有刷新功能的构造方法创建指向文件的输出流。
FileOutputStream(Stringname,booleanappend);FileOutputStream(Filefile,booleanappend);
当用构造方法创建指向一个文件的输出流时,如果参数append取值true,输出流不会刷新所指向的文件(假如文件已存在),输出流的write的方法将从文件的末尾开始向文件写入数据,参数append取值false,输出流将刷新所指向的文件(假如文件已经存在)。