繁体   English   中英

在FileReader中跳过预定义的行

[英]Skipping Predefined Lines in FileReader

我一直在编写基于文本的RPG游戏,并且正在尝试实现保存游戏功能。 一切都经过编码,可以正常工作。

它通过具有一个名为“ slist”的文件来工作,该文件包含savegame名称“ session ID Number” 然后,每个保存游戏都有一个文件。 程序扫描该文件以查看是否存在保存文件,然后从那里确定操作。

注意:我知道这可以简化很多,但是我想自己学习。

我遇到的问题是,我希望能够在使用FileReader从文件读取时跳过行。 这样,用户可以彼此共享文件,并且我可以在文件顶部为他们添加注释(请参见下文)。

我试过使用Scanner.nextLine(),但是有必要在文件中的任何位置插入某个字符,并使其跳过字符后的行(请参见下文)。

private static String currentDir = new File("").getAbsolutePath();
private static File sessionList= new File(currentDir + "\\saves\\slist.dat"); //file that contains a list of all save files

private static void readSaveNames() throws FileNotFoundException {

Scanner saveNameReader = new Scanner(new FileReader(sessionList));

int idTemp;
String nameTemp;

while (saveNameReader.hasNext()) {

//   if line in file contains #, skip the line
nameTemp = saveNameReader.next();
idTemp = saveNameReader.nextInt();
saveNames.add(nameTemp);
sessionIDs.add(idTemp);
}
saveNameReader.close();
}

它引用的文件看起来像这样:

# ANY LINES WITH A # BEFORE THEM WILL BE IGNORED.
# To manually add additional save files,
# enter a new blank line and enter the
# SaveName and the SessionID.
# Example: ExampleGame 1234567890
GenericGame 1234567890
TestGame 0987654321
#skipreadingme 8284929322
JohnsGame 2718423422

有没有办法做到这一点,还是我必须摆脱文件中的任何“注释”并使用for循环跳过前5行?

我的Java有点生锈,但是...

while (saveNameReader.hasNext()) {

  nameTemp = saveNameReader.next();

  //   if line in file contains #, skip the line
  if (nameTemp.startsWith("#"))
  {
    saveNameReader.nextLine();
    continue;
  }

  idTemp = saveNameReader.nextInt();
  saveNames.add(nameTemp);
  sessionIDs.add(idTemp);
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM