review25

文件字节输出流

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

给出输出流的目的地;

创建指向目的地的输出流;

让输出流把数据写入到目的地;

关闭输出流。

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

1.构造方法

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

FileOutputStream(String name);

FileOutputStream(File file);

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

FileOutputStream输出流开通一个到达文件的通道(目的地就是这个文件,输出流指向这个文件)。需要特别注意的是,如果输出流指向的文件不存在,java就会创建该文件,如果指向的文件是已存在的文件,输出流将刷新该文件(使得文件的长度为0)。

另外,与创建输入流相同,创建输出流时,可能会出现错误(被称为异常),例如,输出流试图要写入的文件可能不允许操作或有其他受限等原因。所以需要用try-catch语句抛出异常并捕获检测异常。

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

FileOutputStream(String name, boolean append);

FileOutputStream(File file, boolean append);

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

2.使用输出流写字节

输出流的目的是提供通往目的地的通道,程序可以通过将程序中的数据写入到目的地。文件字节流可以调用从父类继承的write方法顺序地写文件。FileOutputStream流顺序地向文件写入内容,即只要不关闭流,每次调用write方法就顺序地向文件写入内容,直到流被关闭。

字节输出流的write()方法以字节为单位向目的地写数据。

void write(int n) 输出流调用流方法向目的地写入单个字节。

void wirte(byte b[]) 输出调用方法向目的地写入一个字节数组。

void write(byte b[], int off, int len) 给定字节数组中起始于偏移量off处取len个字节写到目的地。

void close()关闭输出流。

3.关闭流

需要注意的是,在操作系统把程序缩写到输出流上的那些字节保存到磁盘上之前,有时被存放在内存缓存区中,通过调用close()方法,可以保证操作系统把流缓冲区的内容写到它的目的地,即关闭输出流可以把该流所用的缓冲区的内容冲洗掉。

代码展示如下所示:

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;

public class Test06 {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        byte [] a = "新年快乐".getBytes();
        byte [] b = "Happy New Year".getBytes();
        File file = new File("F:/workspace1/Test01/src/pack08/test.txt");
        try{
            OutputStream out = new FileOutputStream(file);
            out.write(a);
            out.close();
            out = new FileOutputStream(file, true);
            out.write(b, 0, b.length);
            out.close();
        }
        catch(IOException e)
        {
            System.out.println();
        }
    }

}

运行之后,截图如下所示:

如果将语句

out = new FileOutputStream(file, true);
改成
out = new FileOutputStream(file, false);
运行结果如下所示:
 
 

猜你喜欢

转载自www.cnblogs.com/liaoxiaolao/p/9452530.html