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."); } }



Rispondi quotando