sei su windows vero?
in realtà, come dice anche la documentazione, le operazioni su i file sono molto system dependent (per forza di cose).
Poi io ho provato questa sequenza di codice:
codice:
package ciao;
import java.io.File;
import java.io.IOException;
import java.io.PrintStream;
import java.util.Scanner;
public class ciao {
public static void main(String args[]) throws Exception {
File filein = new File("fileinput") ;
Scanner stream = new Scanner(filein);
while (stream.hasNext()){
System.out.println(stream.next());
}
stream.close();
System.err.println("qui ci arrivo");
File fileouot = new File("fileoutput") ;
PrintStream streaout = new PrintStream(fileouot);
for (int i = 0; i < 10 ; i++){
streaout.println("Ciao " + i);
}
streaout.flush();
streaout.close();
System.err.println("fine scrittura");
filein.delete();
fileouot.renameTo(filein);
}
}
e funziona sul mio pc windows senza problemi.
Se il tuo problema è scrivere sul file di partenza, puoi anche fare cosi
codice:
package ciao;
import java.io.File;
import java.io.IOException;
import java.io.PrintStream;
import java.util.Scanner;
public class ciao {
public static void main(String args[]) throws IOException {
Scanner stream = new Scanner(new File("filein"));
while (stream.hasNext()){
System.out.println(stream.next());
}
stream.close();
System.err.println("qui ci arrivo");
PrintStream streaout = new PrintStream(new File("filein") );
for (int i = 0; i < 10 ; i++){
streaout.println("Ciao " + i);
}
streaout.flush();
streaout.close();
System.err.println("fine");
}
}
usare lo stesso file da input e output, visto che da quello che vedo tu il file lo carichi e poi te ne scordi