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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 清心玉质 中级黑马   /  2013-8-9 15:42  /  1100 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 清心玉质 于 2013-8-9 16:41 编辑

下面写了两段代码:
一个是创建文件,写了十行文字;
另一个是读取这十行文字。
问题就在readline这块,如果没有定义line= readline()的话,打印的是奇数行。
我要进黑马...1
我要进黑马...3
我要进黑马...5
我要进黑马...7
我要进黑马...9
为什么没有打印全部呢?
*/
public class BufferWriterDemo {
/**
  * @param args
  * @throws IOException
  */
public static void main(String[] args) throws IOException {
  // TODO Auto-generated method stub
  FileWriter fw = new FileWriter("F:\\ai.txt");
  BufferedWriter buw = new BufferedWriter(fw);
  
  for (int x=0;x<10;x++)
  {
   buw.write("我要进黑马"+"..."+x);
   buw.newLine();
  }
  
  buw.close();
}
}
class BufferedReaderDemo
{
public static void main(String[] args) throws IOException {
  FileReader fr = new FileReader("F:\\ai.txt");
  BufferedReader bur = new BufferedReader(fr);
  
    while((bur.readLine())!=null)
   {
    System.out.println(bur.readLine()   }
  bur.close();
}

}

3 个回复

倒序浏览
  1. class BufferedReaderDemo
  2. {
  3. public static void main(String[] args) throws IOException {
  4.   FileReader fr = new FileReader("F:\\ai.txt");
  5.   BufferedReader bur = new BufferedReader(fr);
  6.   String line = null;
  7.     while((line = bur.readLine())!=null)
  8.    {
  9.     System.out.println(line) ;
  10.     }
  11.   bur.close();
  12. }

  13. }
复制代码
楼主好,你的写入流成功了,在记事本文件中看到有十条数据;
但是读取的时候,你打印的是System.out.println(bur.readLine()   ;
首先要明白,read方法的原理,它读取数据时会一次向后,当读到一个地方时,把读取到的数据打印,下次读取时会接着上一次的读取。
你判断的时候用的是(bur.readLine())!=null,此时已经读了第一行,但是打印的并不是这一行数据,而是又接着重新读取了一行,
所以导致了隔行的的错误。
更正后代码如上
希望帮到你   谢谢
回复 使用道具 举报
楼主的问题在你写的以下代码中:
  1. while((bur.readLine())!=null)   //这里读了一行
  2. {
  3.         System.out.println(bur.readLine()   }    //这里又读了另一行
  4.         bur.close();    //?
  5. }
复制代码
并且,楼主在关资源的时候写在了循环里面,我想是往这儿搬得时候写错的吧。
回复 使用道具 举报
谢谢大家,学习了~~
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马