View Full Version : [java] Leggere txt e mantenere stessa formattazione
federico100mt
25-03-2009, 09:58
Ciao, nn riesco a capire come posso mantenere la stessa formattazione di un .txt
Praticamente lo leggo, lo metto in una stringa e poi lo metto qui:
JTextArea textArea = new JTextArea(stringa);
Il file lo leggo con questo codice:
while(filebuffer1.ready()){
lic+=(filebuffer1.readLine());
}
molto probabilmente é li che sbaglio.
mi mette il testo tutto attaccato, non riuscendo nenache a leggerelo. Ci sono altre componenti, o metodi di lettura, che mantengono la stessa formattazione del file di origine?
banryu79
25-03-2009, 11:25
Supponendo che "filebuffer1" sia un BufferedReader, il motivo per cui non ottieni quello che desideri è il modo in cui opera il metodo .readLine()
readLine
public String readLine()
throws IOException
Reads a line of text. A line is considered to be terminated by any one of a line feed ('\n'), a carriage return ('\r'), or a carriage return followed immediately by a linefeed.
Returns:
A String containing the contents of the line, not including any line-termination characters, or null if the end of the stream has been reached
Throws:
IOException - If an I/O error occurs
Legge quindi una "singola linea" e te la restituisce senza i caratteri di fine riga tramite un oggetto String.
Devi inserire tu il terminatore di fine riga in coda alla String ricevuta.
Per non creare mile-milla String (l'operatore + applicato a due String crea una terza String che è il risultato delle prime due concatenate; in Java gli oggetti String sono immutabili) nel tuo ciclo puoi dichiarare l'oggetto "lic" come una StringBuilder e usare il suo metodo .append() per concatenare la String restituita dal BufferedReader, ad esempio:
StringBuilder lic = new StringBuilder;
while(filebuffer1.ready()){
String line = filebuffer1.readLine();
lic.append(line); // concateno la stringa letta dal buffer
lic.append("\n"); // concateno il carattere di fine riga
}
Leggi il file di testo tutto in una volta.
Scanner in = new Scanner(il file txt).useDelimiter("\\Z");
try {
String fullText = in.next();
} finally {
in.close();
}
federico100mt
25-03-2009, 12:58
ok...
ora sembra andar bene!
grazie mille ragazzi,
:)
banryu79
25-03-2009, 13:14
Leggi il file di testo tutto in una volta.
Scanner in = new Scanner(il file txt).useDelimiter("\\Z");
try {
String fullText = in.next();
} finally {
in.close();
}
Buono a sapersi...
Cos'è la stringa passata come parametro al metodo useDelimiter()? Una regular expression?
Sì, è un'espressione regolare appartenente alla specie (rarissima) delle espressioni regolari "che si capiscono" :D.
\Z significa "fino alla fine dell'input, escluso il carattere che segnala la fine dell'input, se c'è".
Diventa "\\Z" perchè \ è un carattere speciale nelle stringhe Java e per poterlo "scrivere in una stringa" bisogna usare l'escape '\'.
banryu79
25-03-2009, 14:40
Sì, è un'espressione regolare appartenente alla specie (rarissima) delle espressioni regolari "che si capiscono
Infatti :asd:
Grazie PGI :)
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.