A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 刘正祥 中级黑马   /  2013-5-17 13:50  /  2469 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

前几天做的基础测试题,有一题是 写一个拷贝文件的程序,尽量使用效率高的方式。
使用的是字符流,因为字符流比字节流效率高。其中有一个读文件缓冲区BufferedReader,一个写文件缓冲区BufferedWriter,这样建立了两个缓冲区,有没有那样的可能,在复制文件中,只建立一个缓冲区,在读文件的时候将文件内容放在缓冲区中,然后再将这个缓冲区的内容写入到另外一个文件,求解?

评分

参与人数 1技术分 +1 收起 理由
袁梦希 + 1 赞一个!

查看全部评分

5 个回复

倒序浏览
一个是写文件。一个是读取文件。当然会用到Reader和Writer了
回复 使用道具 举报
自定义缓冲区?
  1. public class FileCopyDemo {
  2.         public static void main(String[] args) throws IOException {
  3.                 FileWriter fw = new FileWriter("C:\\testjava\\bb.java");
  4.                 FileReader fr = new FileReader("C:\\testjava\\myjava.txt");

  5.                 char[] buf = new char[1024];
  6.                 int num = 0;
  7.                 while ((num = fr.read(buf)) != -1) {
  8.                         fw.write(buf, 0, num);
  9.                 }
  10.                 fw.close();
  11.                 fr.close();
  12.         }
  13. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
袁梦希 + 1

查看全部评分

回复 使用道具 举报
程序代码你参考下 应该比较符合题目
  1. public class CopyText {

  2.         public static void main(String[] args) {
  3.                 BufferedReader bufr = null;
  4.                 BufferedWriter bufw = null;
  5.                 try {
  6.                         bufr = new BufferedReader(new FileReader("a.txt"));
  7.                         bufw = new BufferedWriter(new FileWriter("b.txt"));
  8.                         String line = null;
  9.                         while((line = bufr.readLine())!= null)
  10.                         {
  11.                                 bufw.write(line);
  12.                                 bufw.newLine();
  13.                                 bufw.flush();
  14.                         }
  15.                 } catch (FileNotFoundException e) {
  16.                         e.printStackTrace();
  17.                 } catch(IOException e){
  18.                         e.printStackTrace();
  19.                 } finally{
  20.                         if(bufr!= null)
  21.                                 try {
  22.                                         bufr.close();
  23.                                 } catch (IOException e) {
  24.                                         e.printStackTrace();
  25.                                 }
  26.                         if(bufw!= null)
  27.                                 try {
  28.                                         bufw.close();
  29.                                 } catch (IOException e) {
  30.                                         e.printStackTrace();
  31.                                 }
  32.                 }
  33.         }
  34. }
复制代码
回复 使用道具 举报
本帖最后由 刘正祥 于 2013-5-17 16:05 编辑
李志敏 发表于 2013-5-17 14:27
自定义缓冲区?

这个貌似是那么一回事,要使用同一个缓冲区,可以自定义一个,不错!
回复 使用道具 举报
如果问题已解决请再次编辑,改为以解决,方便大家看帖,没有就继续追问
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马