Java文件字节流类包括文件输入流(FileInputStream)和文件输出流(FileOutputStream),它们分别是InputStream和OutputStream的子类,这两个类可以对指定的文件进行读写操作。FileInputStream和FileOutputStream分别是InputStream和OutputStream的子类,InputStream和OutputStream都是抽象类。(Java中流的概念)
1. 文件输入流
FileInputStream类的对象表示一个文件输入流,可从中读取一个或一批字节数据。在生成FileInputStream类的对象时,若指定的文件找不到,则会抛出FileNotFoundException异常,因此,必须进行异常捕获或声明抛出。
FileInputStream类的构造方法如下:
- FileInputStream(String name):根据指定的文件名创建一个文件输入流对象。
- FileInputStream(File file):根据指定的File对象创建一个文件输入流对象。
下面的程序根据File对象创建一个文件输入流对象,从中读取每个字节并转换为字符后在控制台中进行输出。
【例1】文件输入流的使用
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
public class FileInputStreamDemo {
public static void main(String[] args) {
try {
//创建File对象
File file=new File("D:\\examples\\myfile1.txt");
//根据File对象创建文件字节输入流对象
FileInputStream fis=new FileInputStream(file);
int c=0;
//从文件字节输入流对象中读取每个字节直到文件的末尾
while((c=fis.read())!=-1) {
System.out.print((char)c);
}
fis.close();//关闭文件字节输入流对象
} catch (FileNotFoundException e) {
e.printStackTrace();
}catch (IOException e) {
e.printStackTrace();
}
}
}
2. 文件输出流
FileOutputStream类的对象表示一个文件输出流,可向流中写入一个或一批字节数据。在生成FileOutputStream类的对象时,如果指定的文件不存在,则创建一个新的文件,然后再向文件中写入数据。向文件中写入数据有两种模式:覆盖模式和追加模式,覆盖模式是指清除文件中的内容后从头写入数据,追加模式则是将数据写入文件的末尾,默认情况是覆盖模式。
FileOutputStream类的构造方法如下:
- FileOutputStream(String name):根据指定的文件名创建文件输出流对象。
- FileOutputStream(File file):根据指定的File对象创建文件输出流对象。
- FileOutputStream(String name, boolean append):根据指定的文件名创建文件输出流,如果参数append为true,则以追加模式打开文件,否则,以覆盖模式打开文件。
- FileOutputStream(File file, boolean append):根据指定的File对象创建一个文件输出流对象,如果参数append为true,则以追加模式打开文件,否则,以覆盖模式打开文件。
下面的程序根据文件名创建文件输出流,首先采用覆盖模式从头写入数据,然后采用追加模式将数据添加的文件的末尾。
【例2】文件输出流的使用
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
public class FileOutputStreamDemo {
public static void main(String[] args) {
FileOutputStream fos;
try {
//根据文件名创建文件字节输出流对象(覆盖模式)
fos=new FileOutputStream("D:\\examples\\myfile2.txt");
//向文件字节输出流对象中写入数据(从头开始)
fos.write('c');
fos.write('o');
fos.write('m');
fos.write('p');
//根据文件名创建文件字节输出流对象(追加模式)
fos=new FileOutputStream("D:\\examples\\myfile2.txt",true);
//向文件字节输出流对象中写入数据(添加到文件末尾)
fos.write('u');
fos.write('t');
fos.write('e');
fos.write('r');
//关闭文件字节输入流对象
fos.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}