一点小小的反思总结:
1.字符流的读取模式是按照字符,两种主要的方法分别为逐字读取
int a=a1.read();
while(a!=-1){
a2.write(a);
a=a1.read();
}
//逐字读取然后写入
以及利用缓冲数组进行读取(效率会高一些)
char[] arr=new char[5];
int ler=a1.read(arr);//有效长度yyds
while(ler!=-1){
for(int i=0;i<ler;i++){
//先变成字符串,这个也不是不行...
/*String str=new String(arr,0,len);
a2.write(str);*/
a2.write(arr[i]);
}
ler=a1.read(arr);
}
2.每次完成赋值操作都要记得把对应的流对象逆序关闭
3.不要用字符流去复制非文本文件
4.关于覆盖问题写在注释里面了;
//利用字符流进行文本复制的操作,
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
public class io妈妈 {
public static void main(String[] args) throws IOException {
File f1=new File("D:"+File.separator+"data.txt");
File f2=new File("D:"+File.separator+"demo.txt");
if(!f2.exists()){
f2.createNewFile();
}
FileReader a1=new FileReader(f1);
FileWriter a2=new FileWriter(f2,true);
/* int a=a1.read();
while(a!=-1){
a2.write(a);
a=a1.read();
}*/
//这里发现一个小小的问题,这个复制的效果并不是追加...而是重新输入
//也就是说无论是这个文件如何,最终都会被强行赋值为第一个文件的东西
//FileWriter a2=new FileWriter(f2);原因在于这个语句
//如果改成FileWriter a2=new FileWriter(f2,true);
//就可以实现追加的操作;
//如果采用一次复制多个的方法
char[] arr=new char[5];
int ler=a1.read(arr);//有效长度yyds
while(ler!=-1){
for(int i=0;i<ler;i++){
//先变成字符串,这个也不是不行...
/*String str=new String(arr,0,len);
a2.write(str);*/
a2.write(arr[i]);
}
ler=a1.read(arr);
}
//所以说是三种方法,逐个字符写入,数组写入,和拼成字符串写入
//流的关闭最好是倒着来的//
a2.close();
a1.close();
}
}