Visualizzazione dei risultati da 1 a 10 su 10

Discussione: Rinominare file

Visualizzazione discussione

  1. #6
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Così com'è strutturato non va bene e ci sono diversi errori:

    1) Cerchi di eliminare 2 volte il file "inFile".
    2) Non effettui il flush delle scritture, con il rischio di perdere eventuali dati ancora bufferizzati e non scritti
    3) L'intera gestione delle eccezioni e, di conseguenza, dei try/catch non va affatto bene.
    4) In caso di eccezione non stampi lo stackTrace, ma uccidi sia l'eccezione che l'intero processo... per l'intero processo è una tua scelta, per l'eccezione consiglierei di stampare lo stackTrace, altrimenti non saprai mai per quale ragione reale il processo è morto.


    Ho cercato di dare una raddrizzata al tuo codice (non mi sono preoccupato di controllare la correttezza di letture/scritture e altri eventuali calcoli). Prova a vedere come va:

    codice:
        public void addPrenotazione(ArrayList<Posto> a) {
    
            // Dichiariamo e inizializziamo gli oggetti File
            File inFile = new File("file1.txt");
            File out = new File("file1_agg.txt");
    
            // Dichiariamo (e inizializziamo a null) gli stream
            Scanner scan = null;
            PrintStream scrivi = null;
            try {
                scan = new Scanner(inFile);
    
                //APRO FILE DI OUTPUT
                scrivi = new PrintStream(out);
    
                int h = 0;
                while (scan.hasNext()) {
                    //riempio l'arraylist con i dati del file
                    linee.add(new Posto(scan.next().charAt(0), scan.nextInt(), scan.nextInt()));
                    System.out.println(linee.get(h).fila + " " + linee.get(h).posto + " " + linee.get(h).flagDis);
                    h++;
                }
    
                int i = 0, j = 0;
                while (i < a.size()) {
                    if (a.get(i).fila == linee.get(j).fila && a.get(i).posto == linee.get(j).posto) {
                        linee.get(j).flagDis += 1;
                        i++;
                        j++;
                    } else {
                        j++;
                    }
                }
    
                for (int k = 0; k < linee.size(); k++) {
                    scrivi.println(linee.get(k).fila + " " + linee.get(k).posto + " " + linee.get(k).flagDis);
                }
    
                // Se vuoi evitare di perdere la roba bufferizzata e non scritta, forza un flush!
                scrivi.flush();
    
             } catch (Exception e) {
    
                // Mai ammazzare le eccezioni!
                e.printStackTrace();
                System.exit( 1 );   // Boh... vedi tu
    
             } finally {
    
                // La chiusura degli stream va fatta nel finally!
                if (scan != null) {
                   try { scan.close(); } catch (Exception e) { }
                }
                if (scrivi != null) {
                   try { scrivi.close(); } catch (Exception e) { }
                }
    
             }
    
             // Ora i file sono disponibili e possiamo lavorarci su
             if (!inFile.delete()) {
                 System.out.print("File Non Eliminato");
             }
    
             boolean Rinomina = out.renameTo(inFile);
             if (!Rinomina) {
                 System.out.println("File o directory non rinominati. PRENOTAZIONE NON COMPLETATA.");
             }
        }
    Ultima modifica di LeleFT; 24-12-2014 a 10:04
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

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.