Pagina 2 di 2 primaprima 1 2
Visualizzazione dei risultati da 11 a 17 su 17
  1. #11
    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.

  2. #12
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Originariamente inviato da Jamie04
    non produce nessun effetto
    Come chiami la replace?

    Se fai solo
    stringa.replacell ("[\\[\\],]" , "");
    non ti salva il risultato visto che le stringhe sono immutabili.

    Dovresti fare
    stringa = stringa.replacell ("[\\[\\],]" , "");

    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
    Dal toString() di ArrayList.
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  3. #13
    Utente di HTML.it
    Registrato dal
    Sep 2012
    Messaggi
    442
    Originariamente inviato da Alex'87
    Come chiami la replace?

    Se fai solo
    stringa.replacell ("[\\[\\],]" , "");
    non ti salva il risultato visto che le stringhe sono immutabili.
    sì ho fatto come sopra, me tapina...sigh quante cose da ricordare, non ce la farò mai
    comunque ho provato anche come dici tu e non funziona lo stesso. continua a stamparmi tutto.


    Dal toString() di ArrayList.
    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?
    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

  4. #14
    Utente di HTML.it
    Registrato dal
    Sep 2012
    Messaggi
    442
    Bene, la soluzione proposta da zipangulu ha funzionato, ecco il codice finale, non c'e' più bisogno nemmeno dell'arraylist:

    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);
            }
        }
    }
    Svantaggi di questa soluzione? Così tanto per parlare...

  5. #15
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Originariamente inviato da Jamie04
    Svantaggi di questa soluzione? Così tanto per parlare...
    Nel primo catch manca un return: se non trova il file non ha senso continuare con il programma, no?

    Al posto di
    codice:
    s.indexOf("install ") >= 0
    metterei
    codice:
    s.contains(" install ")
    Così secondo me è più chiaro quello che fai (contains richiama indexOf e verifica se != -1 ma il nome spiega meglio quello che vuoi ottenere).

    Il writer lo scriverei in maniera più compatta:

    codice:
    PrintWriter stream = new PrintWriter(new FileWriter("pippoMod.txt"));
    La close() la metterei in un blocco finally, così sei sicuro che verrà sempre eseguito:

    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();
    	    }
    	}
    (idem lo scanner del blocco precedente)
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  6. #16
    Utente di HTML.it
    Registrato dal
    Sep 2012
    Messaggi
    442
    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:

    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();
                }
            }
    In questo:

    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);
            }
    Dandomi il warning: convert to try with resources.
    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à...

  7. #17
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Originariamente inviato da Jamie04
    In questo:

    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);
            }
    Dandomi il warning: convert to try with resources.
    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).

    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

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.