黑马程序员技术交流社区

标题: 关于Java的IO流中的缓冲区问题 [打印本页]

作者: 刘正祥    时间: 2013-5-17 13:50
标题: 关于Java的IO流中的缓冲区问题
前几天做的基础测试题,有一题是 写一个拷贝文件的程序,尽量使用效率高的方式。
使用的是字符流,因为字符流比字节流效率高。其中有一个读文件缓冲区BufferedReader,一个写文件缓冲区BufferedWriter,这样建立了两个缓冲区,有没有那样的可能,在复制文件中,只建立一个缓冲区,在读文件的时候将文件内容放在缓冲区中,然后再将这个缓冲区的内容写入到另外一个文件,求解?
作者: joker_chan    时间: 2013-5-17 14:04
一个是写文件。一个是读取文件。当然会用到Reader和Writer了
作者: 李志敏    时间: 2013-5-17 14:27
自定义缓冲区?
  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. }
复制代码

作者: 刘学明       时间: 2013-5-17 15:08
程序代码你参考下 应该比较符合题目
  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:03
本帖最后由 刘正祥 于 2013-5-17 16:05 编辑
李志敏 发表于 2013-5-17 14:27
自定义缓冲区?

这个貌似是那么一回事,要使用同一个缓冲区,可以自定义一个,不错!
作者: 曹睿翔    时间: 2013-5-19 07:54
如果问题已解决请再次编辑,改为以解决,方便大家看帖,没有就继续追问




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2