2013-02-14 14 views
6

Per un RPG di base MOLTO (beh, top-down che cammina per gioco al momento), Voglio fare un metodo che legge un file "salva" e lo memorizza in memoria (Salvataggio arriva più tardi.) Mi piacerebbe che questo file di salvataggio fosse facile da usare avendo un modo per far sì che determinate righe non venissero lette dal metodo, così da poter inserire le istruzioni su come modificarlo e così via. Attualmente, il piano è di non leggere righe con un% in primo piano, ma che può cambiare se% causa un problema.Lettura sia di carattere che di linea dal file di testo

Il formato di salvataggio stesso che vorrei avere in un blocco compresso: uno o due caratteri alfanumerici denotano il contenuto di un singolo "riquadro". Non voglio semplicemente avere 169 linee per ogni schermata di area, preferisco averle in un blocco compresso di 13 * 13 (di nuovo, per essere user-friendly.)

In sostanza, come posso entrambi a) rilevare se una linea inizia con% b) in caso affermativo, passare alla riga successiva c) Se non, leggere due caratteri alla volta copiatura a matrice di stringhe d) Skip righe vuote

capisco BASIC iO , ma non sono stato in grado di trovare un modo di leggere sia per carattere che per linea.

risposta

3

Personalmente, vorrei usare una BufferedReader per leggere il file riga per riga in singoli String oggetti, e ispezionare il contenuto. È possibile verificare se una linea inizia con un carattere di commento utilizzando il metodo astuto denominato String.startsWith("%") e ottenere i singoli caratteri nella riga utilizzando String.charAt(index) o caratteri doppi utilizzando String.substring(start, start+2).

+0

Scusate, un'altra domanda veloce che non garantisce il proprio argomento: esiste un modo per farlo (in modo ragionevolmente semplice) che non richiede ogni singolo metodo che interagisce con quei dati (cioè ogni singolo metodo) per avere a getta la clausola IOException? – JTTCOTE

+0

Non c'è modo di rimuovere la possibilità che venga lanciata una 'IOException'. Devi decidere come e dove vuoi gestirlo. * Un possibile * modo potrebbe essere quello di catturare l'eccezione e lanciare un 'RuntimeException 'non controllato. – SimonC

0

Vorrei leggere line-by-line con uno scanner, analizzare i primi caratteri della coppia e procedere se necessario. Esempio:

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

Tuttavia, se le coppie di caratteri non sono delimitate, non è possibile utilizzare un secondo scanner per analizzare ogni riga. –

Problemi correlati