上一节,我们学习了文件字节输出流的构造方法,这一节,我们继续学习如何使用输出流写字节以及关闭流。
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()方法,可以保证操作系统把流缓冲区的内容写到它的目的地,即关闭输出流可以把该流所用的缓冲区的内容冲洗掉,通常冲洗到磁盘文件上。
例如:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | 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); } } } |
运行结果如下:
1 2 3 | a.txt的大小: 0 字节 a.txt的大小: 12 字节 a.txt的大小: 26 字节 |
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程