0

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

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

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

我遇到的问题是我希望能够在使用 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 行?

4

1 回答 1

1

我的 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);
}
于 2013-04-26T22:38:51.170 回答