Java FileIO文件流读写总结
简述
代码展示
小结
简述
1.其实文件流的读写没有太大难度,但是其中几个概念相似度太高,容易混淆,所以先解释下几个类。
InputStream 和 OutStream 字节流
InputStreamReader 和 OutStreamWriter 字符流(桥梁)
BufferedReader 和 BufferedWriter 把字节或者字符放入缓冲区,提高读写速度
2.要先用字节流来读取或者写入文件,因为可以避免中文乱码。
3.面对存入文件的数据类型不同选取不同的流方式:字节流,字符流,对象流。
4.在读写的时候,要把流放入缓冲区Buffer里,这样可以加快读写速度。
5.可以总结出一般思路:FileInputStream(字节流)--->InputStreamWriter(字符流)--->BufferedWriter(缓冲池).
6.BufferedWriter bw = new BufferedWriter(new InputStreamWriter(new FileInputStream(file, true))); 可以直接用一个语句来表达三者之间的关系。
代码展示
Code ViewCopyPrint
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
public class TestFileIO {
public static void main(String[] args) {
TestFileIO t = new TestFileIO();
t.write2file("itobin");
}
public void write2file(String cbuf) {
File file = null;//首先定义文件类
OutputStream os = null;//定义字节流
OutputStreamWriter osw = null;//OutputStreamWriter是字节流通向字符流的桥梁。
BufferedWriter bw = null;//定义缓冲区
try {
file = new File("d:\\test.txt"); //新建文件对象
//从文件系统中的某个文件中获取字节
os = new FileOutputStream(file, true); //true是append设为允许,即可以在原文件末端追加。
//将字节流转换成字符流
osw = new OutputStreamWriter(os);
//把接收到的字符流放入缓冲区,提高读写速度。
bw = new BufferedWriter(osw);
//将字符串以流的形式写入文件
bw.write(cbuf);
} catch (FileNotFoundException e) {
System.out.println("找不到指定文件");
} catch (IOException e) {
System.out.println("写入文件错误");
} finally {
try {
//关闭文件放到finally里,无论读取是否成功,都要把流关闭。
//关闭的顺序:最后开的先关闭,栈的先进后出原理。
bw.close();
osw.close();
os.close();
} catch (IOException e) {
System.out.println("文件流无法关闭");
}
}
}
}
以上代码就是把字符串"itobin"写入到d:\test.txt里的过程。
小结
文件流的读写虽没有数据库操作那么重要和常用,但是在一些小型的游戏和程序当中,没有必要动用庞大的数据库的时候,文件的作用就凸现出来了,所以有必要掌握文件流的输入输出。