2015-04-17 28 views
9

Quindi, ho a che fare con l'integrazione di un sistema legacy. Produce un grande file di testo, che stampa le istruzioni in una grande stringa. Corda davvero grande. Stiamo parlando di 450.000 caratteri o più.lettura di stringhe di grandi dimensioni (450000+ caratteri) dal file

Ho bisogno di rompere questo fino a linee, uno per istruzione. Ogni istruzione è separata da un codice a cinque cifre, in cui il codice contiene il numero di caratteri nell'istruzione successiva.

La mia soluzione è scrivere un piccolo programma java che utilizza un lettore bufferizzato per leggere il file in una stringa, che viene successivamente suddivisa in righe e salvata in un nuovo file.

Qualche consiglio su come gestirlo? Un lettore bufferizzato sarà in grado di leggere questo in una stringa normale? Sto sbagliando?

+0

'BufferedReader' dovrebbe essere in grado di leggere i dati. – luiges90

+0

Vorrei usare 'StringBuilder' – brso05

+0

In realtà vorrei elaborare il file in blocchi piuttosto che metterlo tutto in un' String' o 'StringBuilder' se le prestazioni diventano un problema altrimenti lo caricherò tutto in un' StringBuilder'. – brso05

risposta

3

Sì. Utilizzare un lettore bufferizzato.

Calcolare la dimensione massima di un'istruzione e creare un carattere [] di quella dimensione. Quindi fai qualcosa tipo:

reader.read(charArray, 0, 5); 

// parse the header 

reader.read(charArray, 0, lengthOfInstruction); 

String instruction = new String(charArray, 0, lengthOfInstruction); 

// do stuff with the instruction 

Si inserisce questo in un ciclo while che termina quando termina il file.

Questo potrebbe non essere il più efficiente in fase di esecuzione, ma probabilmente è abbastanza buono e sarà abbastanza semplice da funzionare.

+0

Ho finito per fare quasi esattamente questo. –