packageIO;importjava.io.FileReader;importjava.io.FileWriter;importjava.io.Reader;importjava.io.Writer;/*** 案例:利用字符流实现字符文件的拷贝1.txt -> 3.txt
* 1.字符文件的读取:FileReader
* 2.字符文件的写入:FileWriter
* 3.循环上面的过程
* 4.添加上异常处理
* 5.利用字符数组加快传输效率*/
public classFileCopyDemo3 {public static voidmain(String[] args) {/*** 1.创建字符文件输入流指向1.txt
* 2.创建文件输出流指向文件3.txt*/Reader reader= null;
Writer writer= null;try{
reader= new FileReader("1.txt");
writer= new FileWriter("3.txt");/*** 3.对接流,并循环输出
* 4.判断循环条件:当输入流没有数据输入时结束循环
* (1).创建一个指定容量的字符数组来存储数据
* (2).读取数据的时候一次性读取1024个字符 ,将读入的字符放入ch字符数组里面
* (3).写的时候将ch字符数组里面的数据从0位置开始一直写到第 i 个位置
* (4).read()方法返回的是一个int值,其实就是返回ch字符数组里面存储内容的大小*/
int i = 0;char[] ch = new char[1024];while((i = reader.read(ch)) != -1) {
writer.write(ch,0, i);
}
}catch(Exception e) {//TODO Auto-generated catch block
e.printStackTrace();
}finally{/*** 5.关闭流
* (1).关闭流的时候也可能回出异常,所以也要进行异常处理。
* (2).如果出现异常,就要强制关流,把流置为空就可以。*/
try{
reader.close();
}catch(Exception e) {//TODO Auto-generated catch block
e.printStackTrace();
}finally{
reader= null;
}try{
writer.close();
}catch(Exception e) {//TODO Auto-generated catch block
e.printStackTrace();
}finally{
writer= null;
}
}
}
}