Avendo un file di testo c'è un metodo che permetta di leggerlo completamente? Senza fare concat ad ogni readLine();
Avendo un file di testo c'è un metodo che permetta di leggerlo completamente? Senza fare concat ad ogni readLine();
Se vuoi avere tutto il contenuto del file di testo dentro un unico String (ma poi ci devi spiegare a che ti serve ....Originariamente inviato da Pegasys
Avendo un file di testo c'è un metodo che permetta di leggerlo completamente? Senza fare concat ad ogni readLine();) puoi creare un StringBuffer/StringBuilder, poi leggere a blocchi di N char e appenderli nello StringBuffer/StringBuilder.
Andrea, andbin.dev – Senior Java developer – SCJP 5 (91%) • SCWCD 5 (94%)
java.util.function Interfaces Cheat Sheet — Java Versions Cheat Sheet
Quello che mi serve avere è tutto il contenuto del file di testo dentro un'unica stringa
Se ad esempio il file è formato da
la stringa conterràNel mezzo del cammin di nostra vita.
mi ritrovai per una selva oscura.
ché la diritta via era smarrita.
StringBuffer la conosco ma rimane sempre come leggere tutto il fileNel mezzo del cammin di nostra vita.\nmi ritrovai per una selva oscura.\nché la diritta via era smarrita.
Crei un FileInputStream e poi con questo crei un FileInputStream. Quest'ultimo ha il metodo read() per leggere un blocco di N char che deposita in un array. La dimensione dell'array la puoi stabilire tu (es. 1024). Fai un ciclo in cui leggi un blocco che poi appendi al StringBuffer/StringBuilder.Originariamente inviato da Pegasys
ma rimane sempre come leggere tutto il file
Andrea, andbin.dev – Senior Java developer – SCJP 5 (91%) • SCWCD 5 (94%)
java.util.function Interfaces Cheat Sheet — Java Versions Cheat Sheet
Così va bene?
codice:StringBuffer sb = new StringBuffer(); FileInputStream fis = new FileInputStream("C:\\prova.txt"); byte[] bArray = new byte[1024]; int lettura = fis.read(bArray) while (lettura != null) { sb.append(lettura.toString()); lettura = fis.read(bArray); }
No affatto. Non devi usare solo FileInputStream, perché è "orientato" ai byte. Ma devi usare un Reader, come InputStreamReader che è orientato ai caratteri.Originariamente inviato da Pegasys
Così va bene?
Poi 'lettura' è un int, non puoi confrontarlo con null. Poi non devi appendere 'lettura' ma l'array. E nota, non tutto per intero ma usando l'append() che prende l'array più un offset (sempre 0 in questo caso) e una lunghezza. Perché l'ultimo blocco del file potrebbe essere più corto del tuo buffer.
Andrea, andbin.dev – Senior Java developer – SCJP 5 (91%) • SCWCD 5 (94%)
java.util.function Interfaces Cheat Sheet — Java Versions Cheat Sheet
Allora non so come fare. Se hai voglia di scrivere giù 2 righe per vedere come si fa ti ringrazio
I passi sono pochi e semplici:Originariamente inviato da Pegasys
Allora non so come fare.
1) Creare un StringBuffer o StringBuilder.
2) Creare un FileInputStream e poi farne il "wrapping" in un InputStreamReader.
3) Creare un array di char (di lunghezza adeguata ma non esagerata) e definire una variabile intera per la lunghezza che ritorna la read().
4) In un loop:
-- leggere un blocco di char con il metodo read() che ritorna la lunghezza.
-- appendere al buffer il blocco di char, usando l'append() a cui passare anche offset (0) e la lunghezza.
Andrea, andbin.dev – Senior Java developer – SCJP 5 (91%) • SCWCD 5 (94%)
java.util.function Interfaces Cheat Sheet — Java Versions Cheat Sheet
Così potrebbe andare bene?
InputStreamReader prova = new InputStreamReader(new FileInputStream("prova.txt"));
char[] array = new char[1024];
int offset = 0;
StringBuffer buffer = new StringBuffer();
int lettura = prova.read(array, offset, offset+array.length);
while (lettura > 0)
{
buffer.append(array.toString());
offset += array.length;
lettura = prova.read(array, offset, offset+array.length);
}
codice:public static String readWholeFile (String fileName) throws IOException { InputStreamReader isr = null; StringBuffer sb = new StringBuffer (); char[] buf = new char[1024]; int len; try { FileInputStream fis = new FileInputStream (fileName); isr = new InputStreamReader (fis); while ((len = isr.read (buf)) > 0) sb.append (buf, 0, len); return sb.toString (); } finally { if (isr != null) isr.close (); } }
Andrea, andbin.dev – Senior Java developer – SCJP 5 (91%) • SCWCD 5 (94%)
java.util.function Interfaces Cheat Sheet — Java Versions Cheat Sheet