PrintWriter per l’aggiunta di dati se il file esiste

Ho un savegame file chiamato mysave.sav e voglio aggiungere dati in questo file, se il file esiste già. Se il file non esiste, voglio creare il file e quindi aggiungere i dati.

Aggiunta di dati funziona bene. Ma di accodare i dati sovrascrive i dati esistenti. Ho seguito le istruzioni di axtavt qui (PrintWriter metodo append non si allegano).

    String savestr = "mysave.sav"; 
    File f = new File(savestr);
    PrintWriter out = new PrintWriter(savestr);

    if ( f.exists() && !f.isDirectory() ) {
        out = new PrintWriter(new FileOutputStream(new File(savestr), true));
        out.append(mapstring);
        out.close();
    }
    else {
        out.println(mapstring);
        out.close();
    }

dove mapstring è la stringa che voglio aggiungere. Mi potete aiutare? Grazie!

InformationsquelleAutor TheWaveLad | 2014-07-27

 

One Reply
  1. 5

    Una volta chiamata PrintWriter out = new PrintWriter(savestr); il file viene creato se non esiste, quindi, prima di verificare l’esistenza del file inizializzarla.

    Come accennato in Costruttore Docmentation che dice:

    Se il file esiste poi verrà troncato di dimensioni pari a zero; in caso contrario, un nuovo file verrà creato.

    Dal file viene creato prima di chiamare f.exists(), quindi, di ritorno true sempre e ìf blocco non viene mai eseguito.

    Codice di esempio:

    String savestr = "mysave.sav"; 
    File f = new File(savestr);
    
    PrintWriter out = null;
    if ( f.exists() && !f.isDirectory() ) {
        out = new PrintWriter(new FileOutputStream(new File(savestr), true));
    }
    else {
        out = new PrintWriter(savestr);
    }
    out.append(mapstring);
    out.close();

    Per una migliore gestione delle risorse utilizzare Java 7 - provare-con-le risorse Economico

    • Grazie, questo funziona se lascio la prima riga del blocco if (out = new PrinterWriter(savestr)). Non so se mi sono permesso di modificare la tua risposta.
    • per errore aggiunto. siete liberi di modificarlo. Io sono più che felice, se si modifica.
    • Grazie per la modifica. si prega di seguire gli ultimi link che potrebbe aiutarti molto.

Lascia un commento