Java base VI: Gestione I/O. Argomenti Introdurre le API per linput e output in Java.
-
Upload
celia-monaco -
Category
Documents
-
view
213 -
download
0
Transcript of Java base VI: Gestione I/O. Argomenti Introdurre le API per linput e output in Java.
Java base VI:Java base VI:Gestione I/OGestione I/O
Argomenti
• Introdurre le API per l’input e output in Java
Obiettivi
• Familiarizzare con le procedure di accesso ai file
Input e Output in JavaInput e Output in Java
Gestito dal package java.iojava.io
classiinterfacce
eccezioni
Composto da classi per
Accedere ad informazioni relative ai Accedere ad informazioni relative ai file e alle directoryfile e alle directory
Leggere e scrivere Leggere e scrivere datidati
IMPORTATO ESPLICITAMENTE
La classe FileLa classe FileLa classe fondamentale per accedere alle La classe fondamentale per accedere alle
informazioni relative ai file ed alle informazioni relative ai file ed alle directorydirectory
E’ importante tenere presenti i problemi di portabilità del codice:
File f = new File(“C:\prova.txt”);
File cartella = new File(“C:\cartella”);
File f = new File(“C:\”, “prova.txt”);
File f = new File(cartella,“prova.txt”);
Metodi principaliMetodi principali
Accesso ai datiAccesso ai dati
Il meccanismo di lettura e scrittura dei dati è basato sul Il meccanismo di lettura e scrittura dei dati è basato sul concetto di concetto di streamstream
Sequenza ordinata di dati che hanno una sorgente (flussi di ingresso) o una destinazione (flussi di uscita)
Per gestire gli stream abbiamo classi che agiscono da "lettori" e "scrittori
ProgrammaProgrammaJavaJava
Dispositivo Dispositivo I/OI/O
ProgrammaProgrammaJavaJava
Dispositivo Dispositivo I/OI/O
INPUT STREAM
OUTPUT STREAM
stream di caratteri (16 bit)stream di caratteri (16 bit) stream di byte (8 bit)stream di byte (8 bit)
Algoritmi standard di lettura/scritturaAlgoritmi standard di lettura/scrittura
1) Apertura dello stream di input
2) while “ci sono dati da leggere”:
Lettura dei dati in input
3) Chiusura dello stream1) Apertura dello stream di
2) while “ci sono dati da scrivere”:
Scrittura dei dati in
3) Chiusura dello stream
Algoritmo di letturaAlgoritmo di lettura
Algoritmo di scritturaAlgoritmo di scrittura
Stream di CaratteriStream di CaratteriLe classi astratte Reader e Writer forniscono le API e una parziale
implementazione di stream di caratteri, rispettivamente, di input e output;
ReaderReaderInputStreamReader FileReaderFileReader
BufferedReaderBufferedReader
WriterWriterOutputStreamWriter FileWriterFileWriterBufferedWriterBufferedWriter
Lettura e scrittura tramite buffer
Riduce accessi Aumenta efficienza
File inputFile = new File("input.txt");
File outputFile = new File("output.txt");
FileReader in = new FileReader(inputFile);
FileWriter out = new FileWriter(outputFile);
BufferedReader inb = new BufferedReader(in);
BufferedWriter outb = new BufferedWriter(out);
int c;
while ((c = inb.read()) != -1)
outb.write(c);
inb.close();
outb.close();
Istanzio gli oggetti
Scorro e scrivo
Chiudo gli stram
Stream di byteStream di byte
Le classi astratte InputStream e OutputStream forniscono le API e una parziale implementazione di stream di byte di input e output
InputStreamInputStreamFileInputStream
OutputStreamOutputStreamFileoutputStream
ObjectInputStream
ObjectOutputStream
Permettono di serializzareserializzare un oggetto
codificarlo come stream di byte
Solo se oggetto implementaInterfaccia SERIALIZABLE
FileOutputStream out = new FileOutputStream("temp.dat");
ObjectOutputStream s = new ObjectOutputStream(out);
s.writeObject("Oggi");
s.writeObject(new Date());
s.flush();
FileInputStream in = new FileInputStream("temp.dat");
ObjectInputStream i = new ObjectInputStream(in);
String today = (String)i.readObject();
Date date = (Date)i.readObject();
Scrive su file i due oggetti
Legge da file i due oggetti