import java.io.*;
/* I File in Java:
* In Java, i file vengono gestiti diversamente da come aspettato:
* i file, anzichè interagire direttamente col programma, vengono
* elaborati in maniera diversa.
* Le informazioni prima di arrivare dalla sorgente (file o
* programma che sia), passano per un buffer, ovvero vengono
* memorizzati in memoria centrale per poi essere passati alla
* memoria di massa o al programma, quindi al terminale stesso.
*
* Input (dal file al programma):
* (P: programma; MC: memoria centrale; F: file)
* F -> MC -> P
*
* Output (dal programma al file):
* (P: programma; MC: memoria centrale; F: file)
* P -> MC -> F
*
*/
public class CopiaFile {
public static void main(String args[]) {
FileReader fr = null; // Istruzione di input: Dichiariamo il canale dal file alla memoria centrale;
BufferedReader fIn = null; // Istruzione di input: Dichiariamo il canale dalla memoria centrale al programma;
FileWriter fw = null; // Instruzione di output: Dichiariamo il canale dal programma alla memoria centrale;
PrintWriter fOut = null; // Instruzione di output: Dichiariamo il canale dalla memoria centrale al file;
String r = null;
// Inizializzazione della lettura:
try {
fr = new FileReader("studente.txt"); /* Istruzione di input: Apriamo il canale dal file alla memoria centrale;
* ATTENZIONE!: Il file deve già esistere in memoria! */
fIn = new BufferedReader(fr); // Istruzione di input: Apriamo il canale dalla memoria centrale al programma;
}
catch (Exception e) {
System.out.println("Errore: file inesistente;");
}
// Inizializzazione della scrittura:
try {
fw = new FileWriter("copia-studente.txt"); // Instruzione di output: Apriamo il canale dal programma alla memoria centrale;
fOut = new PrintWriter(fw); // Instruzione di output: Apriamo il canale dalla memoria centrale al file;
}
catch (Exception e) {
System.out.println("Errore: file esistente;");
}
// Lettura:
try {
r = fIn.readLine(); // Assegnamo ad r la riga letta dal file;
} catch (Exception e) {
System.out.println("Errore: impossibile leggere dal file;");
}
// Iterazione delle istruzioni eseguite sopra (Lettura e Scrittura);
while (r != null) {
//Scrittura e aggiornamento del file:
fOut.println(r); // Scriviamo nel file r;
fOut.println(); // Aggiungiamo una riga (come richiesato dall'esercizio);
fOut.flush(); // Aggiorniamo il file;
try {
r = fIn.readLine();
} catch (Exception e) {
System.out.println("Errore: impossibile leggere dal file;");
}
}
// Chiusura del file in lettura:
try {
fIn.close();
} catch (Exception e) {
System.out.println("Errore: impossibile chiudere il file;");
}
// Chiusura del file in scrittura;
fOut.close();
}
}
Comments