• un file è una collezione di dati salvata su supporto di memorizzazione di massa.
  • non è parte del codice sorgente di un programma
  • il programma deve conoscere il formato dei dati nel file
  • è importante distinguere tra file di testo e file binari

stream

astrazioni derivate da dispositivi di i/o sequenziale.

  • uno stream di input riceve uno stream di caratteri “uno alla volta”
  • uno stream di output produce uno stream di caratteri
  • un file può essere trattato come uno stream di input o output

classi per leggere/scrivere

  • per caratteri:
    • java.io.Reader / java.io.Writer
  • per byte
    • java.io.InputStream / java.io.OutputStream
  • per file di testo
    • java.util.Scanner (più lenta perché più potente)

leggere

metodi dell'interfaccia reader

center

BufferedReader

BufferedReader permette una lettura bufferizzata dei caratteri forniti da FileReader

BufferedReader br = null;
try
{
	br = new BufferedReader(new FileReader(filename));
	while(br.ready())
	{
		String line = br.readLine();
		//...
	}
	catch(IOException e)
	{
		//gestione eccezione
	}
	finally
	{
		if (br != null)
			try {br.close();} catch(IOException e) { /*gestione*/}
	}
}
try with resources

è possibile specificare tra le parentesi dopo try un elenco di istruzioni separate da ; che definiscono le risorse da chiudere automaticamente

try(BufferedReader br = new BufferedReader(new FileReader(fileName)); 
	BufferedReader br2 = new BufferedReader(new FileReader(fileName2)))
{
	while(br.ready()){
		String line = br.readLine();
	}
}
catch(IOException e) {}
chiudere automaticamente uno stream

è possibile per tutti gli oggetti di classi che implementano java.lang.Autoclosable (estesa dall’interfaccia java.io.Closeable)

public interface AutoCloseable
{
	void close() throws Exception;
}

scrivere

metodi dell'interfaccia Writer

center