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(); } }