文件流:
在 I/O 处理中,最常见的就是对文件的操作。java.io 包中所提供的文件操作类包括:
- 用于读写本地文件系统中的文件:FileInputStream 和 FileOutputStream
- 描述本地文件系统中的文件或目录:File、FileDescriptor 和 FilenameFilter
- 提供对本地文件系统中文件的随机访问支持:RandomAccessFile
下面是文件流的 FileInputStream 和 FileOutputStream
FileInputStream 类用于打开一个输入文件,若要打开的文件不存在,则会产生例外 FileNotFoundException,着是一个非运行时例外,必须捕获或声明抛弃;
FileOutputStream 类用来打开一个输出文件,若要打开的文件不存在,则会创建一个新的文件,否则原文件的内容会被新写入的内容所覆盖;
在进行文件的读/写操作时,会产生非运行时例外 IOException,必须捕获或声明抛弃(其他的输入/输出流处理时也同样需要进行输入/输出例外处理)。
文件流的构造方法:
//打开一个以 f 描述的文件作为输入 FileInputStream(File f) //打开一个文件路径名为 name 的文件作为输入 FileInputStream(String name) //创建一个以 f 描述的文件作为输出 //如果文件存在,则其内容被清空 FileOutputStream(File f) //创建一个文件路径名为 name 的文件作为输出 //文件如果已经存在,则其内容被清空 FileOutputStream(String name) //创建一个文件路径名为 name 的文件作为输出 //文件如果已经存在,则在该输出上输出的内容被接到原有内容之后 FileOutputStream(String name, boolean append)
例子如下:
File f1 = new File("file1.txt"); File f2 = new File("file2.txt"); FileInputStream in = new FileInputStream(f1); FileOutputStream out = new FileOutputStream(f2)
输入流的参数是用于指定输入的文件名,输出流的参数则是用于指定输出的文件名。
import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; public class test { public static void main(String[] args) { try { //inFile 作为输入流的数据文件必须存在,否则抛出异常 File inFile = new File("/Users/mumutongxue/Documents/file1.txt"); //file2.txt没有,系统可以创建 File outFile = new File("file2.txt"); FileInputStream fis = new FileInputStream(inFile); FileOutputStream fos = new FileOutputStream(outFile); int c; while((c = fis.read()) != -1){ fos.write(c); } //打开了文件一定要记着关,释放系统资源 fis.close(); fos.close(); }catch(FileNotFoundException e) { System.out.println("FileStreamsTest:" + e); }catch(IOException e){ System.err.println("FileStreamTest:" + e); } } }