总的来说字符流的复制与字节流大同小异
流程 文件——>内存——>文件
一、文件到内存
(1)创建输入流管道
Reader reader = new Reader("d:/abc.txt");
(2)创建输出流管道
Writer writer= new Writer("d:xyz.txt");
(3)在内存中创建数组来接收数据字符流char[]
注意:1个字符等于8个字节
Char[] buf=new char[4];
(4)创建可变字符串用来接收拼接的数据
StringBuffer sb=new StringBuffer();
(5)创建返回值,用来判断文件是否出入完了,输入完了返回值为-1
int len=-1;
(6)多次输入用while循环直到 文件返回值为-1 不等于-1是继续输入
while(len=reader.read(buf)!=-1){
//输入进来的数据用append()方法来进行拼接
sb.append(buf,0,len);
}
(7)将StringBuffer转换成String进行替换
String content=sb.toString();//用toString()方法
content = content.replace("")
(8)将替换的内容输出到文件 内存——>新文件
Writer.writer(content);
(9)先关闭输入流,再关闭输出流
writer.close();
reader.close();
二、实现
package IO;
import java.io.*;
public class FileCopyCharator {
public static void main(String[] args) {
Reader reader =null;
Writer writer =null;
//将文件输入到内存
try {
reader=new FileReader("d:/说明.txt");
writer=new FileWriter("d:/sb.txt");
char[] buf=new char[4];
//用于字符串拼接
StringBuffer sb=new StringBuffer();
//创建返回值
int len=-1;
while ((len=reader.read(buf)) != -1){
//str += buf; 每次收到的字符进行拼接apend()方法
sb.append(buf,0,len);//每次读取4个字符 拼接起来
}
//在内存中 替换站位符
System.out.println(sb);
String content = sb.toString();
content=content.replace("大家好","buhao");
//将替换后内容 输出到文件 内存->文件 wrtier
writer.write(content);
System.out.println("成功");
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}finally {
if(writer!=null&&writer!=null){
try {
// writer.flush(); //也可用flush()将管道中的数据刷出道文件中
writer.close();
reader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}