0

我正在尝试从文本文件中读取并使用输入来创建多个不同的对象。我显然不想在文件为空后继续阅读,所以我有一个方法 isEmpty() 读取到文件中我想要的点,然后读取下一行并测试 null。

问题是,如果它不是空的,那么它会继续读取文件......但是从 NEXT 行开始。换句话说,我阅读了第一行进行测试,但随后无法再次阅读。

我目前的想法是创建一个虚拟对象来测试它并使用相同的第二个对象来实际使用。但这似乎有点浪费,我认为必须有更好的方法....谢谢大家!

注意:读取的方法与检查空的方法不同。在整个对象的方法中都使用了相同的 bufferedReader,否则我将需要要求用户再次输入文件名,而我不想这样做。

4

2 回答 2

0

我认为您可能想要使用RandomAccessFile,它具有支持跳过的功能并且能够向后移动。

您可能对使用以下方法感兴趣:

  void  seek(long pos) 
  int   skipBytes(int n) 
  String    readLine() 
于 2012-11-01T18:28:06.423 回答
0

你为什么不坚持BufferedReader成语?而不是询问文件是否为空,如果不为空则获取下一项,而是直接询问下一项,如果没有项则让该方法返回null。简单得多:

while ((line = reader.readLine()) != null) {
    ...
}

否则,您可以使用mark()标记您当前的位置,提前阅读一些行,然后reset()返回您的标记。

于 2012-11-01T18:30:02.590 回答