字符流
字符流
*特点:只用于处理字符,处理文本文件
Reader --输入
Write--输出
字符流实现复制文件,并修改文件中的字符
实现了把"介绍.txt内容复制到"实际介绍.txt",并且修改了第一个文件的占位符
result:
public class Filecopycharacter {
public static void main(String[] args) throws IOException {
Reader reader=null;
Writer writer=null;
try {
//定义字符流
reader = new FileReader(new File("d:/介绍.txt"));
writer = new FileWriter(new File("d:/实际介绍.txt"));
StringBuilder sb = new StringBuilder();
//把文件输入到内存中
char[] chars = new char[4]; //每次只读取四个字符
int len=-1;
while((len=reader.read(chars)) !=-1){ //每次读取字符的个数
sb.append(chars,0,len);
}
System.out.println(sb);
//替换占位符
String s=sb.toString();
String res=s.replace("{name}","阿杰").replace("{play}","这里玩").
replace("{house}","房子");
//内存-->文件(writer)
writer.write(res);
// writer.flush(); //将管道中的数据刷出到文件中
}catch (Exception e){
e.printStackTrace();
}finally {
//关闭流
if(writer != null) writer.close();
if(reader != null) reader.close();
}
}
}
自带缓冲区的字符流
BufferedReader--输入
BufferedWriter--输出
定义:
带缓冲区的字符流 对象=new 带缓冲区的字节流(字节流);
BufferedReader br = new BufferedReader(reader);
BufferedReader实现cory一个文件:
public class FilecopyBufferead {
public static void main(String[] args) throws IOException {
Reader reader=null;
Writer writer=null;
BufferedReader br=null;
BufferedWriter bf=null;
try {
reader = new FileReader(new File("d:/介绍.txt"));
writer = new FileWriter("d:/实际介绍.txt");
br = new BufferedReader(reader); //自带缓冲区的输入字符流
bf = new BufferedWriter(writer);
StringBuilder sb = new StringBuilder();
String line=null;
while((line=br.readLine()) != null){ //当每一行都有数据读取时
//字符拼接
sb.append(line);
}
// 进行替换
String s=sb.toString();
String res=s.replace("{name}","阿杰").replace("{play}","这里玩").
replace("{house}","房子");
// System.out.println(res);
//输出到文件
bf.write(res);
}catch (Exception e){
e.printStackTrace();
}finally {
//关闭流
/**
* 原则: 先关出再关入
* 先关外再关内 例: BufferedReader br = new BufferedReader(reader)
*/
if(bf != null) bf.close();
if(br != null) br.close();
if(writer != null) writer.close();
if(reader != null) reader.close();
}
}
}