首页 > 代码库 > java 21 - 4 字符流的文件复制操作以及简化
java 21 - 4 字符流的文件复制操作以及简化
既然字节流可以复制文件,那么字符流当然也有。
同样的思路:
数据源:
a.txt -- 读取数据 -- 字符转换流 -- InputStreamReader
目的地:
b.txt -- 写出数据 -- 字符转换流 -- OutputStreamWriter
1 // 封装数据源 2 InputStreamReader isr = new InputStreamReader(new FileInputStream( 3 "a.txt")); 4 // 封装目的地 5 OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream( 6 "b.txt")); 7 8 // 读写数据 9 // 方式110 // int ch = 0;11 // while ((ch = isr.read()) != -1) {12 // osw.write(ch);13 // }14 15 // 方式216 char[] chs = new char[1024];17 int len = 0;18 while ((len = isr.read(chs)) != -1) {19 osw.write(chs, 0, len);20 // osw.flush();21 }22 23 // 释放资源24 osw.close();25 isr.close();
简化:
我们常用的编码表大都是使用本地默认的编码表,也就是GBK。所以呢,我们可以不指定编码表。
同时,字符流的名称有些长...好长,所以呢,Java就提供了字符流的子类给我们使用:
之前用的字符流:
OutputStreamWriter = FileOutputStream + 编码表(GBK)
InputStreamReader = FileInputStream + 编码表(GBK)
使用它的子类:
FileWriter = FileOutputStream + 编码表(GBK)
FileReader = FileInputStream + 编码表(GBK)
来,使用简化版重新做复制:
1 //封装数据源 2 FileReader fr = new FileReader("a.txt"); 3 //封装目的地 4 FileWriter fw = new FileWriter("b.txt"); 5 6 //使用一次读取一个字符数组的方式来复制 7 int len = 0; 8 char[] ch = new char[1024]; 9 while((len = fr.read(ch)) != -1){10 fw.write(ch,0,len);11 }12 //释放资源13 fw.close();14 fr.close();15 }
代码少了很多,简洁明了
java 21 - 4 字符流的文件复制操作以及简化
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。