注意:在写出的时候一定要注意要记得清空缓冲区!
字符输入流FileReader
跟FileInputStream使用的方式和方法一样,不过返回的数据类型为char类型的,所以我们要用char字符串数组接受
方法
close() 关闭输入流
int read () 从输入流读取下一字符
int read (char[] ch) 从输入流读取若干字符数据,并存储到字符数组
read (char[] ch, int off, int len) 从输入流读取至多len个字符数据,并存储到字符数组close() 关闭字符输入流
字符输出流FileWriter
同样跟FileoutputStream使用方法一样
使用过程:
1.创建一个FileWriter对象。明确要被操作的文件,如果该目录下已经有同名文件,将被覆盖,追加true免除覆盖
FileWriter fw=new FileWriter("demo.txt");
2.调用write方法,将字符串写入到流中fw.write(str);
3. 刷新流对象中的缓冲区fw.flush();
4.关闭流资源,但是关闭之前会刷新一次内部的缓冲中的数据,和flush的区别,flush刷新后,流可以继续使用,close刷新后将会将流关闭。
fw.close();BufferReader
字符流提供了带缓冲区的包装流,就是BufferReader,它自带缓冲区
BufferedReader用于对字符输入流进行包装,缓冲区的出现提高了对数据的读写效率
BufferedReader创建步骤:
1.创建一个字符写入流对象
FileReader fr=new FileReader ("a.txt");
2.将需要被 提高效率 的流对象 作为参数 传递给缓冲区的构造函数BufferedReader bf=new BufferedReader (fr);
3.读取流对象:该缓冲区 提供了一个一次读取一行 的方法。当 返回null时表示 , 文件读到末尾String line=null;
while(( line=bufr.readLine() )!=null) {String s=line;}
4.关闭
bufr.close();
程序开发中,经常需要向文件中写入字符,可以使用Writer的子类FileReader
但是有时会出现中文编码格式问题
1于是我们就要通过FileReader的父类InputStreamReader作为中转站用字节流inputStream,读取字节文件
2再创建InputStreamReader(fis,“UNF-8”)这种格式限制读取的中文编译格式,改变的只是读取的字节流,源文件并没改变
3最后用BufferReader(ISR)创建对象调用读取方法
4writer也是一样的,可以通过中装输出不同编码格式的内容
示例:
public static void main(String[] args) {
OutputStream is = null; //先创建字节流
OutputStreamWriter isr = null;//再转换成包装后的字节流,可以设置编码格式
BufferedWriter bw= null; //再转换成BuffeRwriter
try {
is = new FileOutputStream("d:/jin1.txt",true);
isr = new OutputStreamWriter(is, "UTF-8");
bw = new BufferedWriter(isr);
bw.write("金前旺");
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}finally{
try {
if (bw!=null) {
bw.close();
}
if (isr!=null) {
isr.close();
}
if (is!=null) {
is.close();
}
} catch (IOException e) {
e.printStackTrace();
public static void main(String[] args) {
FileReader fr =null;
BufferedReader br =null;
FileWriter fw = null;
BufferedWriter bw = null;
try {
fr = new FileReader("d:/bet.txt");
br = new BufferedReader(fr);
fw = new FileWriter("d:/bet.txt",true);
bw = new BufferedWriter(fw);
StringBuffer sb = new StringBuffer();
String line;
while ((line = br.readLine())!=null) {
sb.append(line);
}
String str = sb.toString();
/*String s1=str.replace("{name}","豆豆");
String s2=s1.replace("{type}","拉布拉多");
String s3=s2.replace("{master}","金前旺");*/
str.replace("name","豆豆").replace("type","拉布拉多").replace("master","金前旺");
bw.newLine();
bw.write(str);