上一节,我们学习了文件字节输出流的构造方法,这一节,我们继续学习如何使用输出流写字节以及关闭流。

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字节


点赞(0)

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

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

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

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

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

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

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

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

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