Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    Strano comportamento di ButtonActionPerformed

    Salve,
    sto riscontrando uno strano problema nell'eseguire la creazione di un file da Java utilizzando un Button. Il file ha un nome "parametrico" poiché contiene i dati di input, quindi al variare di anche soltanto uno dei dati di input, un nuovo file viene generato da zero, secondo questo codice:
    codice:
        private void ButtonCADActionPerformed(java.awt.event.ActionEvent evt) {
            try (PrintWriter writer = new PrintWriter("Radici(" + grado + ")" + reale + "+" + img + "i.scr")) {
                writer.println("_pline");
                for (int i = 0; i < soluzioniR.size(); i++) {
                    writer.println(soluzioniR.get(i) + "," + soluzioniI.get(i));
                }
                writer.println("ch");
                writer.println("'_zoom");
                writer.println("_e");
                writer.close();
            } catch (FileNotFoundException ex) {
                Logger.getLogger(RadiciNdiCGUI.class.getName()).log(Level.SEVERE, null, ex);
            }
            File f = new File("Radici(" + grado + ")" + reale + "+" + img + "i.scr");
            String pathAssoluto = f.getAbsolutePath();
            PathArea.setText("");
            PathArea.setLineWrap(true);
            PathArea.append("File .scr correttamete salvato in:\n" + pathAssoluto);
        }
    SoluzioniR e SoluzioniI sono due ArrayList che in altra parte del progetto contengono i vari output organizzati, seguendo le istruzioni di un altro ActionPerformed.
    L'interfaccia del mio file jar dispone anche di un button per resettare tutti i campi di input e output.

    Succede che, se utilizzo più volte il mio programma nella medesima sessione (Run del file jar), il file che viene generato accoda le nuove soluzioni a quelle precedenti anziché metterle sul nuovo file che, in quanto tale, dovrebbe essere vuoto.

    Il problema si verifica anche con un altro Button che però genera un file con altra estensione, ma sempre attingendo ai due ArrayList.

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,254
    Quote Originariamente inviata da Gas75 Visualizza il messaggio
    Succede che, se utilizzo più volte il mio programma nella medesima sessione (Run del file jar), il file che viene generato accoda le nuove soluzioni a quelle precedenti anziché metterle sul nuovo file che, in quanto tale, dovrebbe essere vuoto.
    Dal punto di vista della creazione del file ... no di certo, non c'è alcun "append" di per sé. PrintWriter non ha la funzionalità di "aprire" un file in append (ce l'hanno invece FileOutputStream e FileWriter). Quindi per come hai fatto, il file viene SEMPRE riscritto da zero.

    Può venire invece da pensare che siano i tuoi ArrayList a non venire mai svuotati, in pratica probabilmente aggiungi sempre. E pertanto il problema si sposta a livello di tua logica applicativa.



    P.S. Per evitare di ripetere la composizione del nome del file (che è una ripetizione!):

    prima:

    File f = new File("Radici(" + grado + ")" + reale + "+" + img + "i.scr");

    poi:

    try (PrintWriter writer = new PrintWriter(f)) {
    ......


    Molto semplice, no?
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    Java Versions Cheat Sheet

  3. #3
    Hai ragione, l'errore stava nel non aver messo i .clean() a svuotare i due ArrayList, mi ha tratto in inganno il fatto che venisse cancellata correttamente la textarea di output che appunto stampa i contenuti degli ArrayList.

    Grazie per il suggerimento per evitare la ripetizione (mio refuso da compilazione discontinua... ).

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