Visualizzazione dei risultati da 1 a 6 su 6

Discussione: Wrapper di variabili

  1. #1

    Wrapper di variabili

    Sto provando, per sperimentare, a realizzare un editor di testo in stile Blocco note di Windows; questa è la parte relativa alla gestione del file:

    codice:
    package functions;
    
    import java.io.*;
    
    public class Manager {
        String f;
        File textfile;
        FileReader tfr;
        BufferedReader tbr;
        FileWriter tfw;
        BufferedWriter tbw;
        public String pimpa;
        
        public Manager (String filename) {
            f=filename;
        }
        public String openFile (String f) {
            try {
                textfile = new File (f);
                tfr = new FileReader (textfile);
                tbr = new BufferedReader (tfr);
                String lines;
                while ((lines=tbr.readLine())!=null) {
                    pimpa.concat(lines+"\n");
                }
            } catch (IOException e) {}
            return pimpa;
        } 
        public void saveFile () {
            try {
                tfw = new FileWriter (textfile);
                tbw = new BufferedWriter (tfw);
                tbw.write(); //devo ancora definire come voglio scrivere sul file
            } catch (IOException e) {}
            
        }
        public void closeFile () {
            try {
                tbw.close ();
            } catch (IOException e) {}
        }
    }
    Questo il programma che ho creato per provare l'apertura:

    codice:
    import functions.*;
    
    public class Editor {
        public static void main (String [] a) {
            Manager leggimi = new Manager (a[0]);
            String pimpa = leggimi.pimpa;
            System.out.println(pimpa);
        }
    }
    L'output su terminale è sempre null, indipendentemente dall'esistenza o meno del file. Da quel che capisco, l'errore sta da qualche parte nel costruttore, ma non capsco quale sia esattamente. Help?

  2. #2
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Ti stampa null perché i vari metodi openFile/saveFile/closeFile non vengono chiamati da NESSUNA parte ^^'

    (come design fa abbastanza acqua ma sorvoliamo...)
    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. #3
    Quote Originariamente inviata da Alex'87 Visualizza il messaggio
    Ti stampa null perché i vari metodi openFile/saveFile/closeFile non vengono chiamati da NESSUNA parte ^^'

    (come design fa abbastanza acqua ma sorvoliamo...)
    Correggendo il metodo openFile ()
    codice:
    public String openFile () {
            try {
                textfile = new File (f);
                tfr = new FileReader (textfile);
                tbr = new BufferedReader (tfr);
                String lines;
                while ((lines=tbr.readLine())!=null) {
                    pimpa.concat(lines+"\n");
                }
            } catch (IOException e) {}
            return pimpa;
        }
    e il programma di prova :
    codice:
    public static void main (String [] a) {
            Manager leggimi = new Manager (a[0]);
            String pimpa = leggimi.openFile();
            System.out.println(pimpa);
        }
    mi genera un'ovvia NullPointerException. Non so dove sto mettendo i piedi, credo che la considerazione sul design dica tutto

  4. #4
    Utente di HTML.it L'avatar di Nikopol
    Registrato dal
    Jan 2011
    Messaggi
    120
    Ciao,
    Te la genera qui:
    codice:
    pimpa.concat(lines+"\n");
    perchè invochi concat() su una stringa nulla. Ti basta inizializzare pimpa a stringa vuota prima di invocare il metodo.
    Comunque concat crea una nuova stringa e la restituisce; se non la salvi da qualche parte(o sovrascrivi pimpa), la nuova stringa va persa.
    codice:
    pimpa=pimpa.concat(lines+"\n");
    PS: Se devi concatenare molte stringhe ti consiglio di usare uno StringBuilder invece che una String.
    Ultima modifica di Nikopol; 09-08-2014 a 22:19
    La Guida Galattica è infallibile.
    È la realtà, spesso, ad essere inesatta.

  5. #5
    Quote Originariamente inviata da Nikopol Visualizza il messaggio
    Ciao,
    Te la genera qui:
    codice:
    pimpa.concat(lines+"\n");
    perchè invochi concat() su una stringa nulla. Ti basta inizializzare pimpa a stringa vuota prima di invocare il metodo.
    Comunque concat crea una nuova stringa e la restituisce; se non la salvi da qualche parte(o sovrascrivi pimpa), la nuova stringa va persa.
    codice:
    pimpa=pimpa.concat(lines+"\n");
    PS: Se devi concatenare molte stringhe ti consiglio di usare uno StringBuilder invece che una String.
    Ci avevo già provato: sulla linea
    codice:
    pimpa=pimpa.concat(lines+"\n");
    mi da un bel cannot find symbol in fase di compilazione; questo anche inizializzandola come stringa vuota. Ma la mia impressione è che neppure ci arrivi li...che caso mai il problema sia su come prendo il nome del file da leggere.

  6. #6
    Errata corrige: funziona XD avevo messo un = al posto del punto.
    Ok, a questo punto, dove posso trovare qualcosa da leggere per un buon design?

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 © 2025 vBulletin Solutions, Inc. All rights reserved.