PDA

View Full Version : [JAVA] Chiarimenti su stream I/O


ka0s
02-06-2006, 11:55
Ho scritto questo programma che prende in input il nome di un file e in output il nome di un altro file. Deve copiare il contenuto del primo file nel secondo (che crea al momento).

Vi riporto qui il codice del programma, solo che mi sembra un po' contorto... se avete suggerimenti... ;)

BufferedReader keyboard = new BufferedReader(new InputStreamReader(System.in));

String FileIn = "", FileOut = "";

System.out.print("Inserisci il nome del file da leggere: ");
FileIn = keyboard.readLine();
BufferedReader br = new BufferedReader(new FileReader(FileIn));

System.out.print("Inserisci il nome del file da creare: ");
FileOut = keyboard.readLine();
BufferedWriter bw = new BufferedWriter(new FileWriter(FileOut));


String str;
while( (str = br.readLine()) != null )
bw.write(str);

bw.flush();
bw.close();
br.close();


PS: tra l'altro il nuovo file viene creato su una "singola riga"... cioè se il primo contiene:
riga1
riga2
riga3
il secondo risulta
riga1riga2riga3

ka0s
03-06-2006, 13:22
..:: up ::..

nessuno sa rispondere? :(

andbin
03-06-2006, 13:44
tra l'altro il nuovo file viene creato su una "singola riga"Usa bw.newLine() per inserire un newline nel file.

Oppure usa un PrintWriter che ha le println().

ka0s
03-06-2006, 15:25
Usa bw.newLine() per inserire un newline nel file.

Oppure usa un PrintWriter che ha le println().
ok grazie!! ;)

cmq come procedimento in sè è giusto? credevo fosse un po' troppo macchinoso...

andbin
03-06-2006, 21:53
cmq come procedimento in sè è giusto? credevo fosse un po' troppo macchinoso...Mah ... non mi sembra (almeno a me personalmente) particolarmente macchinoso, quindi direi che va bene. L'unica cosa è che leggi ogni riga del file sorgente e la scrivi subito dopo sul file di destinazione. Se l'obiettivo era quello di copiare un file pari pari, si poteva usare una lettura/scrittura a blocchi di byte che sarebbe risultata sicuramente più efficiente. ;)

^TiGeRShArK^
03-06-2006, 23:20
Mah ... non mi sembra (almeno a me personalmente) particolarmente macchinoso, quindi direi che va bene. L'unica cosa è che leggi ogni riga del file sorgente e la scrivi subito dopo sul file di destinazione. Se l'obiettivo era quello di copiare un file pari pari, si poteva usare una lettura/scrittura a blocchi di byte che sarebbe risultata sicuramente più efficiente. ;)
quoto in pieno ;)

ka0s
04-06-2006, 11:25
ok grazie!!