字节流与字符流
使用File类只能实现文件本身的操作,但是与文件内容的操作无关,如果要想进行文件内容操作由以下两组流完成:
- 字节流:InputStream、OutputStream
字符流:Reader、Writer
但是不管使用何种流,基本的操作流程是一样的,以文件操作为例:确定操作文件的路径;
- 确定字节流或字符流的子类为字节流和字符流类对象实例化;
- 进行输入、输出的操作;
- 关闭流 流属于资源操作,资源操作完成一定要关闭。
字节输出流:OutputStream
java.io.OutputStream是可以进行字节数据(Byte)的输出,这个类的定义解构如下:
public abstract class OutputStream extends Object implements Closeable, Flushable
首先可以发现在OutputStream类之中实现了两个接口:
Closeable 关闭资源
public void close() throws IOException
Flushable
public void flush() throws IOException
从实际的开发来讲,对于Closeable和Flushable两个接口是属于后来再次抽象的产物,本身存在的意义不大。因为在OutputStream类里面已经存在close()和flush()两个方法。
在OutputStream里面有三个write()方法。
输出单个字节:public abstract write(int b) throws IOException;
输出全部字节:public void write(byte[] b) throws IOException
输出部分字节:public void write(byte[] b, int off, int len) throws IOException
但是OutputStream只是一个抽象类,无法实例化,所以可以使用FileOutputStream子类。这个类定义了两个常用构造方法:
- 构造方法:
public FileOutputStream(File file) throws FileNotFoundException, 覆盖
public FileOutputStream(File file, boolean append) throws FileNotFoundException, 追加。