Uhm, se lo scopo è imparare come risolvere la problematica con Java ok, ma "nel mondo reale" io userei semplicemente grep...
codice:grep install nomefile.txt
Uhm, se lo scopo è imparare come risolvere la problematica con Java ok, ma "nel mondo reale" io userei semplicemente grep...
codice:grep install nomefile.txt
Amaro C++, il gusto pieno dell'undefined behavior.
Come chiami la replace?Originariamente inviato da Jamie04
non produce nessun effetto![]()
Se fai solo
stringa.replacell ("[\\[\\],]" , "");
non ti salva il risultato visto che le stringhe sono immutabili.
Dovresti fare
stringa = stringa.replacell ("[\\[\\],]" , "");
Dal toString() di ArrayList.Originariamente inviato da Jamie04
e comunque se andasse bene potrebbe avere l'effetto inaspettato di togliere caratteri che magari servono (non è questo il caso, però come linea generale...)
non riesco a capire il fatto che l'arraylist venga stampato così:
[stringa,stringa,stringa]
da "chi" dipende
SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
Di questo libro e degli altri (blog personale di recensioni libri) | NO M.P. TECNICI
sì ho fatto come sopra, me tapina...sigh quante cose da ricordare, non ce la farò maiOriginariamente inviato da Alex'87
Come chiami la replace?
Se fai solo
stringa.replacell ("[\\[\\],]" , "");
non ti salva il risultato visto che le stringhe sono immutabili.![]()
comunque ho provato anche come dici tu e non funziona lo stesso. continua a stamparmi tutto.
posso riconfigurarlo come si fa col toString() di object solo per togliere la parentesi quadra e le virgole? e in tal caso come potrei fare?Dal toString() di ArrayList.
grazie
ps. a chi lo chiedeva, ovvio che questo è un programma per esercitarmi, se volevo filtrare un file avevo mille modi per farlo in maniera molto più veloce
Bene, la soluzione proposta da zipangulu ha funzionato, ecco il codice finale, non c'e' più bisogno nemmeno dell'arraylist:
Svantaggi di questa soluzione? Così tanto per parlare...codice:public class LeggiFile { public static void main(String[] args) { StringBuilder sb=new StringBuilder(); try { Scanner scanner = new Scanner(new File("Gnome.txt")); String s; while (scanner.hasNextLine()) { s = scanner.nextLine(); if (s.indexOf("install ") >= 0) { sb.append(s+"\n"); } } scanner.close(); } catch (FileNotFoundException e) { System.out.println("File non trovato"); } try { FileWriter fos = new FileWriter("pippoMod.txt"); PrintWriter stream = new PrintWriter(fos); stream.print(sb); stream.close(); } catch (IOException e) { System.out.println("Errore: " + e.getMessage()); System.exit(-1); } } }
Nel primo catch manca un return: se non trova il file non ha senso continuare con il programma, no?Originariamente inviato da Jamie04
Svantaggi di questa soluzione? Così tanto per parlare...
Al posto di
mettereicodice:s.indexOf("install ") >= 0
Così secondo me è più chiaro quello che fai (contains richiama indexOf e verifica se != -1 ma il nome spiega meglio quello che vuoi ottenere).codice:s.contains(" install ")
Il writer lo scriverei in maniera più compatta:
La close() la metterei in un blocco finally, così sei sicuro che verrà sempre eseguito:codice:PrintWriter stream = new PrintWriter(new FileWriter("pippoMod.txt"));
(idem lo scanner del blocco precedente)codice:PrintWriter stream = null; try { stream = new PrintWriter(new FileWriter("pippoMod.txt")); stream.print(sb); } catch (IOException e) { System.out.println("Errore: " + e.getMessage()); } finally { if (stream != null) { stream.close(); } }
SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
Di questo libro e degli altri (blog personale di recensioni libri) | NO M.P. TECNICI
Su contains: e dire che immaginavo esistesse un metodo simile ma ero riuscita a trovare solo l'indexOf![]()
Piccolo chiarimento: perché netbeans mi suggerisce di trasformare questo blocco:
In questo:codice:PrintWriter stream = null; try { stream = new PrintWriter(new FileWriter("pippoMod.txt")); stream.print(sb); } catch (IOException e) { System.out.println("Errore: " + e.getMessage()); System.exit(-1); } finally { if (stream != null) { stream.close(); } }
Dandomi il warning: convert to try with resources.codice:try (PrintWriter stream = new PrintWriter(new FileWriter("pippoMod.txt"))) { stream.print(sb); } catch (IOException e) { System.out.println("Errore: " + e.getMessage()); System.exit(-1); }
A parte per il fatto che il codice è più compatto...
Ho letto che questo try with resources è stato implementato nella versione 7 di java, ma nion ne capisco l'utilità...
Beh, si occupa di chiudere in automatico le risorse usate, evitando di allungare il codice con finally (che magari a loro volta posso lanciare eccezioni).Originariamente inviato da Jamie04
In questo:
Dandomi il warning: convert to try with resources.codice:try (PrintWriter stream = new PrintWriter(new FileWriter("pippoMod.txt"))) { stream.print(sb); } catch (IOException e) { System.out.println("Errore: " + e.getMessage()); System.exit(-1); }
A parte per il fatto che il codice è più compatto...
Ho letto che questo try with resources è stato implementato nella versione 7 di java, ma nion ne capisco l'utilità...
Per approfondimenti leggi la documentazioen Oracle: http://docs.oracle.com/javase/tutori...urceClose.html
ps: se non è indispensabile non usare System.exit(-1), è abbastanza brutale..
SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
Di questo libro e degli altri (blog personale di recensioni libri) | NO M.P. TECNICI