JavaProgrammazione

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;