在java中检查EOF和跳过行

在java中检查EOF和跳过行,java,lines,eof,skip,Java,Lines,Eof,Skip,我试图从文本文件中读取数据,并使用输入创建多个不同的对象。显然,我不想在文件为空后继续读取,因此我有一个方法isEmpty(),它一直读取到文件中所需的点,然后读取下一行并测试null 问题是,如果它不是空的,那么它将继续读取文件…但是从下一行开始。换句话说,我读了要测试的第一行,但之后就不能再读了 我目前的想法是创建一个虚拟对象来测试它,并使用相同的第二个对象来实际使用。但这似乎有点浪费,我想一定有更好的办法……谢谢大家 注: 读取的方法与检查是否为空的方法不同。 在对象的方法中使用相同的bu

我试图从文本文件中读取数据,并使用输入创建多个不同的对象。显然,我不想在文件为空后继续读取,因此我有一个方法isEmpty(),它一直读取到文件中所需的点,然后读取下一行并测试null

问题是,如果它不是空的,那么它将继续读取文件…但是从下一行开始。换句话说,我读了要测试的第一行,但之后就不能再读了

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

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

我想您可能想使用,它有支持跳过的功能,并且能够向后移动

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

  void  seek(long pos) 
  int   skipBytes(int n) 
  String    readLine() 

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

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

否则,您可以使用
mark()
标记当前位置,先读几行,然后
reset()
返回标记。

您说的第一件事我不能做,因为我需要将此检查作为与read()分开的方法方法,因为某些其他事情…但第二个想法是一个好主意,它听起来像。我必须在网上找到这些方法的一些例子…谢谢!我的理解(尽管我可能错了)是,文件中存储了多个内容,并且有一个函数可以单独读取每个内容,如果之后文件为空,则丢弃该文件。文件不是每次都被读取到最后。isEmpty的一个用途是让程序知道不要读取和创建新对象(没有它,它会开始在所有字段中创建空的对象)。也许我会这样做…我必须了解更多关于这一点的信息?inb4使用Scanner(file filename)
while(scan.hasNext()){String str=scan.next();MakeStrick(str);}