Flussi di input / output

Per ricevere / scrivere in ingresso dei dati, un'applicazione apre uno stream collegato a una sorgente di informazioni (file, memoria, socket, ...) da cui legge / scrive squenzialmente le informazioni

Il pacchetto **java.io** è composto da due sezioni principali

La classe FileReader

public FileReader(String nomeFile) throws FileNotFoundException

Crea un oggetto per leggere uno stream di caratteri collegato con il file il cui nome è specificato come argomento. Se il file con tale nome non esiste, il metodo solleva l'eccezione controllata FileNotFoundException

public int read() throws IOException //legge un carattere dallo stream. Se si è raggiunta la fine del file restituisce -1

public int read(char[] buf) throws IOException //legge una sequenza di caratteri della stessa lunghezza dell'array specificato come argomento e li memorizza nelle posizioni successive dell'array

public void close() throws IOException //chiude lo stream che esegue il metodo.

Esempio:

import prog.io.*;
import java.io.FileReader;
import java.io.IOException;

public class VisualizzaFile{
	public static void main(String[] args) throws IOException {
		ConsoleOutputManager out = new ConsoleOutputManager();
		FileReader frd = new FileReader(args[0]); //costruzione stream

		int i;
		while((i = frd.read()) != -1) //lettura e visualizzazione
			out.print((char)i);

		frd.close(); //chiusura stream
	}
}

Classi filtro: BufferedReader

Permette di leggere testo da uno stream di caratteri fornendo un meccanismo di bufferizzazione

public BufferedReader(FileReader frd)

public String readLine() throws IOException //legge una linea di testo. Se si è raggiunta la fine dello stream restituisce null

public void close() throws IOException

Esempio:

FileReader frd = new FileReader(args[0]);
BufferedReader bfr = new BufferedReader(frd);
String str;

while((str = bfr.readLine()) != null)
	out.println(str);

bfr.close();
frd.close();