Stream
Uno stream è una sequenza di dati, nei quali il dato elementare della sequenza è il byte. L’approccio delle classi di I/O in java forniscono:
- uno stream di basso livello che legge byte da una sorgente di input;
- un filtro di alto livello che legge byte da uno stream di basso livello;
- un reader per la lettura di stringhe in formato UTF;
- uno stream di basso livello che scrive byte verso una sorgente di output;
- un filtro di alto livello che scrive byte su uno stream di basso livello;
- un writer per la scrittura di stringhe in formato UTF;
In questo esempio leggiamo un file byte per byte
Modifichiamo leggermente il programma utilizzando un buffer e uno stream di basso livello che comunica con uno stream di alto livello.
Per leggere un file di testo in formato UNICODE basta leggere due byte alla volta e interpretarli come un solo carattere.
while (charSourceStream.available () >= 2) { charDestStream.writeChar (charSourceStream.readChar ()); } |
Se invece dobbiamo leggere un file di testo in formato ASCII
while ((charRead = charSourceStream.read (buffer)) != -1) { charDestStream.write (buffer, 0, charRead); } |
Per una applicazione che può funzionare su diversi sistemi operativi cosa importante la diversa gestione del percorso path, la classe java.io.File fornisce una rappresentazione astratta per i nomi di path. Un campo statico separatorChar varia in funzione del sistema operativo in cui l’applicazione viene eseguita.
- System.getProperty – ci permette di individuare quale è il sistema operativo;
- listFiles – permette di ottenere una lista di oggetti file;
- getName – legge il nome del file o directory;
- isDirectory – verifica se è una directory;
- canRead, canWrite, canExecute – verifica lo stato dei permessi lettura, scrittura ed eseguibile;
- lenght – restituisce la dimensione in file del file;
- createNewFile, mkDir, delete, renameTo – per creare, cancellare e rinominare file e directory;