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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 黑马陈旭东 中级黑马   /  2012-6-6 12:33  /  1349 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

public class BufferWriteTest {
/**
  * @param args
  * @throws IOException
  *//*
  * 通过缓冲区来完成文本文件的复制。
  */
public static void main(String[] args) throws IOException {
  
  //输入,读
  FileReader fr = new FileReader("E:\\Test.txt");
  //输入缓冲区
  BufferedReader br = new BufferedReader(fr);
  
  //输出,写
  FileWriter fw = new FileWriter("D:\\buffer.txt");
  //输出缓冲区
  BufferedWriter bw = new BufferedWriter(fw);
  
  //读数据、
/* while(br.read()!=-1)
  {
   bw.write(br.read());
   bw.flush();
   
  }*/
  //这样一个字一个字的写效率太慢,所以我们用读一行写一行的
  
  while(br.readLine()!=null)
  {
   bw.write(br.readLine());
   bw.newLine();
   bw.flush();
//我没用变量,直接这样读写,但是写入的只有源文件的一部分。

String line = null;
  while((line=br.readLine())!=null)
  {
   bw.write(line);
   bw.newLine();
   bw.flush();
   
   
  }
//但是如果我用了变量,就可以写入源文件的全部,刚开始我以为是缓冲区容量的问题,
后来发现不是。谁能告诉我为什么?


   
   
  }
  br.close();
  bw.close();
  
  
  
}
}

评分

参与人数 1技术分 +1 收起 理由
袁錦泰 + 1

查看全部评分

3 个回复

倒序浏览
look the pic

io.png (12.94 KB, 下载次数: 11)

io.png

评分

参与人数 1技术分 +1 收起 理由
袁錦泰 + 1

查看全部评分

回复 使用道具 举报
while(br.readLine()!=null)
  {
  bw.write(br.readLine());
这两行代码出错了!
本来在while中就读了一行数据;但你的  bw.write(br.readLine());中又读了一行;
也就是说,在while中读的数据没有打印就读下一行了;所以在只有一半!
你可以用变量刚好解决这个问题。

评分

参与人数 1技术分 +1 收起 理由
袁錦泰 + 1

查看全部评分

回复 使用道具 举报
梁小波 发表于 2012-6-6 12:42
while(br.readLine()!=null)
  {
  bw.write(br.readLine());

呵呵!原来是这样
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马