guarda ho un po ordinato il tuo codice separando i passi (e cercando di farti vedere che in questo modo loggando per bene è più facile capire in quale punto il problema si crea).
ora sei sicuro che ad ogni giro il file di partenza è cancellato?codice:public void addPrenotazione(ArrayList<Posto> a){ // Sarebbe meglio separare le operazioni, in realtà andrebbero in metodi differenti // credo che linee sia una variabile globale File out=new File("file1_agg.txt"); File inFile=new File("file1.txt"); try{ List<Posto> linee = loadFile(inFile); // non ho capito che fai, lo sai tu, ma lascio stare 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++;} } writeFile(linee, out); if (!inFile.delete()) { System.out.print("File Non Eliminato"); //qui dovresti fermarti visto che il file non eliminato non ti permette di fare rename. } /* CREO IL FILE DI AGGIORNAMENTO CON LA PRENOTAZIONE NUOVA */ boolean Rinomina = out.renameTo(inFile); if(!Rinomina){System.out.println("File o directory non rinominati. PRENOTAZIONE NON COMPLETATA.");} } catch(IOException e){ // almeno all'inizio vedi tutto e.printStackTrace(); } } private List<Posto> loadFile(File inFile) throws IOException { List<Posto> ret = new ArrayList<Posto>(); Scanner scan = null; try{ scan = new Scanner(inFile); int h=0; while(scan.hasNext()){ //riempio l'arraylist con i dati del file ret.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++; } }finally{ if (scan != null){ try{ scan.close(); }catch(Exception e){ // fai quello che ti pare } } } return ret; } private void writeFile(List<Posto> linee, File out){ PrintStream scrivi = null; try { //APRO FILE DI OUTPUT scrivi = new PrintStream(out); for(int k=0;k<linee.size();k++){ scrivi.println(linee.get(k).fila+" "+linee.get(k).posto+" "+linee.get(k).flagDis); } scrivi.flush(); // io lo faccio sempre per sicurezza }finally{ if (scrivi != null){ try{ scrivi.close(); }catch(Exception e){ // fai quello che ti pare } } } }
perché guarda qui
http://docs.oracle.com/javase/6/docs...ava.io.File%29
public boolean renameTo(File dest)
Renames the file denoted by this abstract pathname.Many aspects of the behavior of this method are inherently platform-dependent: The rename operation might not be able to move a file from one filesystem to another, it might not be atomic, and it might not succeed if a file with the destination abstract pathname already exists. The return value should always be checked to make sure that the rename operation was successful.
Parameters:dest - The new abstract pathname for the named file
Returns:true if and only if the renaming succeeded; false otherwise
Throws:SecurityException - If a security manager exists and its SecurityManager.checkWrite(java.lang.String) method denies write access to either the old or new pathnames
NullPointerException - If parameter dest is null

Rispondi quotando