RinoDrummer icon

Esercizio Java con spiegazione

RinoDrummer | PRO | 10/14/14 01:41:17 PM UTC | 0 ⭐ | 544 👁️ | Never ⏰ | []
Java |

2.83 KB

|

None

|

0 👍

/

0 👎

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