テキストベースの RPG ゲームをプログラミングしており、ゲームの保存機能を実装しようとしています。すべてがコード化され、正しく動作します。
セーブゲームの名前と「セッションID番号」を保持する「slist」というファイルを持つことで機能します。その後、セーブゲームごとにファイルがあります。プログラムはこのファイルをスキャンして保存ファイルが存在するかどうかを確認し、そこからアクションを決定します。
注:これはかなり単純化できることはわかっていますが、自分で学びたいと思っています。
私が直面している問題は、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 行をスキップする必要がありますか?