2013-02-14 11 views
6

Aby uzyskać BARDZO podstawową grę RPG (Cóż, obecnie gra w chodzenie z góry na dół), chcę utworzyć metodę, która odczyta plik "zapisz" i zapisze go w pamięci (Zapisywanie przychodzi później.) Chciałbym, aby ten plik składowania był przyjazny dla użytkownika, dzięki sposobowi, aby niektóre linie nie były odczytywane przez metodę, tak, żebym mógł umieścić instrukcje modyfikacji i takie. Obecnie plan polega na tym, aby nie czytał linii z% z przodu, ale to się może zmienić, jeśli% powoduje problem.Odczytaj zarówno znak jak i linię z pliku tekstowego

Sam format zapisu Chciałbym mieć w jednym skompresowanym bloku - jeden lub dwa znaki alfanumeryczne oznaczają zawartość pojedynczego "kafelka". Nie chcę po prostu mieć 169 linii na każdym ekranie obszaru, wolałabym je mieć w skompresowanym bloku 13 * 13 (znowu, aby był przyjazny dla użytkownika).

Zasadniczo, jak mogę a) Wykrywanie jeśli linia rozpoczyna% b) Jeśli tak, przejdź do następnej linii c) Jeśli nie, przeczytaj dwa znaki przy kopiowaniu czasu do tablicy ciągów d) pomiń puste linie

ja rozumieć podstawowe IO , ale nie byłem w stanie znaleźć sposobu czytania zarówno po charakterze, jak i po linii.

Odpowiedz

3

Osobiście używam BufferedReader aby odczytać pliku linia po linii na poszczególne String obiektów i zbadać jego zawartość. Możesz sprawdzić, czy linia zaczyna się od znaku komentarza, używając sprytnie nazwanej metody String.startsWith("%") i uzyskać pojedyncze znaki w wierszu, używając String.charAt(index), lub podwójne znaki używając String.substring(start, start+2).

+0

Przepraszam, jeszcze jedno szybkie pytanie, które nie uzasadnia własnego tematu: czy jest jakikolwiek sposób robienia tego (w dość łatwy sposób), który nie wymaga każdej metody, która współdziała z tymi danymi (tj. Każdej pojedynczej metody), aby mieć a wyrzuca klauzulę IOException? – JTTCOTE

+0

Nie ma możliwości usunięcia możliwości wyrzucenia 'IOException'. Musisz zdecydować, jak i gdzie chcesz sobie z tym poradzić. * Jednym * możliwym sposobem może być złapanie wyjątku i odrzucenie wyjątku RuntimeException. – SimonC

0

Chciałbym czytać wiersz po wierszu ze skanerem, przeanalizować kilka pierwszych znaków i kontynuować, jeśli trzeba. Przykład:

Scanner lineReader = new Scanner(new FileReader(filename)); 
Scanner parser; 
while (scanner.hasNextLine()){ 
    parser = new Scanner(scanner.nextLine()); 
    if(parser.hasNext())){ //checks for blank line 
    String firstWord = parser.next(); 
    if(/*Check for %*/) 
     continue; 
    else 
     //parse as you will 
    } 
} 
+0

Chociaż pary znaków nie są rozdzielane, możesz nie chcieć używać drugiego skanera do analizowania każdej linii. –

Powiązane problemy