【问题标题】:BufferedReader problem in JavaJava中的BufferedReader问题
【发布时间】:2009-12-08 14:12:54
【问题描述】:

我和我的伙伴正在为我们大学的面向对象编程课程开发一个程序。我们正在尝试将文本写入文件作为信息数据库。问题是当我们尝试使用 BufferedReader 读取相应的行时,我们似乎无法弄清楚如何读取正确的行。唯一可用的函数似乎是 read(),它只读取一个字符。 readLine() 只读取一行(不是我们希望它读取的行。skip() 只跳过指定的一些字符。有人知道我们如何告诉程序我们要读取哪一行吗?我们的方法 getAnswer()使用参数 int rowNumber 是我们正在尝试做的一个: 超类:http://pastebin.com/d2d9ac07f 子类无关紧要(主要是因为我们还没有编写它)。 当然,我们正在使用的是 Java。 先谢谢了。

【问题讨论】:

  • 看看 Scanner (java.sun.com/javase/6/docs/api/java/util/Scanner.html) 并从那里获取...
  • 您的意思是,使用扫描仪实际上与将文本读取到字符串中不一样吗?我们的问题是我们想不出如何告诉读者从文件中读取哪一行。

标签: java bufferedreader


【解决方案1】:

您必须使用readLine(),循环执行此操作,计算您已经阅读的行数,直到达到您要处理的行号。

BufferedReader 或其他标准库类中没有方法可以自动为您读取行号 N。

【讨论】:

  • 这是我们一段时间后的想法,感谢您告诉我们!似乎是最聪明的方法。
  • 该死的,你比我快 20 秒 :(
【解决方案2】:

使用缓冲阅读器 .readLine();方法,直到你得到你需要的数据。扔掉你不需要的所有东西,然后存储你需要的数据。当然,这不是有效的,它应该可以完成您的工作。

【讨论】:

    【解决方案3】:
    Java 中的

    readLine() 只是从缓冲区中读取,直到遇到换行符,因此您实际上无法指定 应从文件中读取哪一行,因为存在Java 无法确切知道每行有多长。

    这也是为什么很难使用skip() 跳转到特定行的原因。

    您最好使用readLine() 循环遍历行,然后当您的计数器位于您想要的位置时,开始处理。

    String line = myBufferedReader.readLine();
    for(int i = 1; i < whichLine && line != null; i++){
        line = myBufferedReader.readLine();
    }
    
    /* do something */
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-09-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-18
      相关资源
      最近更新 更多