以下是用带缓存的方式实现文件的输入和输出,缓存是I/O的一种性能优化,缓存流为I/O流增加了内存缓存区,从而使得在流上执行skip(),mark(),reset()成为了可能;
BufferedReader类与BufferedWriter类分别继承于Reader类和Writer类,这两个类同样具有内部缓存机制,并且是以行为单位进行输入输出,字符数据读取文件的过程如下:
字符数据--->BufferedWriter--->OutputStreamWriter--->OutputStream--->文件;
BufferedReader类常用的方法如下:
read():读取单个字符;
readLine():读取文本行,并将其返回为字符串,若无数据可读,返回null.
BufferedWriter类常用方法如下:
write();写入字符串的某一部分;
flush();刷新该流的缓存;
newLine();写入一个行分隔符.
在使用BufferedWriter类的Write()方法时,数据并没有立刻被写入至输出流,而是首先进入缓存区中,如果想立刻将缓存区中的数据写入输出流,一定要调用flush()方法。
package edu.hue.rj;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
public class Readwirte {
public static void main(String args[]){
try{
BufferedReader br=new BufferedReader(new FileReader("wr2.txt"));
String s=null;
int i=0;
while((s=br.readLine())!=null)
{
i++;
System.out.println("第"+i+"行"+s);
}
br.close();
}catch(Exception e){
e.printStackTrace();
}
try{
String s[]={"这似乎就不是完整的面向对象了,按照OO的原则就是一个对象只暴露有用的东西."};
FileWriter file=new FileWriter("wr.txt");
BufferedWriter bw=new BufferedWriter(file);
for(int i=0;i<s.length;i++)
{
bw.write(s[i]);
bw.newLine();
}
bw.close();
file.close();
}
catch(Exception e){
e.printStackTrace();
}
}
}