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:
e funziona sul mio pc windows senza problemi.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); } }
Se il tuo problema è scrivere sul file di partenza, puoi anche fare cosi
usare lo stesso file da input e output, visto che da quello che vedo tu il file lo carichi e poi te ne scordicodice: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"); } }

Rispondi quotando