上一节,我们学习了文件字节输出流的构造方法,这一节,我们继续学习如何使用输出流写字节以及关闭流。
1.使用输出流写字节
输出流的目的是提供通往目的地的通道,程序可以通过这个通道将程序中的数据写入到目的地,文件字节流可以调用从父类继承的write方法顺序地写文件。FileOutStream流顺序地向文件写入内容,即只要不关闭流,每次调用write方法就顺序地向文件写入内容,直到流被关闭。
字节输出流的write方法以字节为单位向目的地写数据。
1)void write(int n)
输出流调用该方法向目的地写入单个字节。
2)void write(byte b[])
输出流调用该方法向目的地写入一个字节数组。
3)void write(byte b[],int off,int len)
给定字节数组中起始于偏移量off处取len个字节写到目的地。
4)void close()
关闭输出流。
注意:FileOutputStream流顺序地写文件,只要不关闭流,每次调用write方法就顺序地向目的地写入内容,直到流被关闭。
2.关闭流
在操作系统把程序所写到输出流上的那些字节保存到磁盘上之前,有时被存放在内存缓冲区中,通过调用close()方法,可以保证操作系统把流缓冲区的内容写到它的目的地,即关闭输出流可以把该流所用的缓冲区的内容冲洗掉,通常冲洗到磁盘文件上。
例如:
import java.io.*; public class Main { public static void main(String args[]) { byte [] a = "新年快乐".getBytes(); byte [] b = "Happy New Year".getBytes(); File file = new File("a.txt"); //输出的目的地 try { OutputStream out = new FileOutputStream(file); //指向目的地的输出流 System.out.println(file.getName()+"的大小:"+file.length()+"字节"); out.write(a); //向目的地写数据 out.close(); out = new FileOutputStream(file,true); //准备向文件尾加内容 System.out.println(file.getName()+"的大小:"+file.length()+"字节"); out.write(b,0,b.length); System.out.println(file.getName()+"的大小:"+file.length()+"字节"); out.close(); } catch(IOException e) { System.out.println("Error"+e); } } }
运行结果如下:
a.txt的大小:0字节 a.txt的大小:12字节 a.txt的大小:26字节
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程