Classi per lo Stream orientate al carattere di Java

20 febbraio 2017

Dopo aver visto le classi per la realizzazione di Stream orientati al byte, ci spostiamo su quelle orientate ai caratteri in formato UNICODE. Tutte le classi orientate allo Stream di caratteri in Java estendono le classi astratte java.io.Reader o java.io.Writer; esempi di queste classi sono le seguenti: FileReader, FileWriter, BufferedReader, BufferedWriter, InputStreamReader ed OutputStreamWriter.

Iniziamo la nostra trattazione dall’ultimo esempio presentato nel precedente capitolo fornendo una versione in grado di leggere correttamente file i cui caratteri sono in formato ASCII. Utilizziamo le classi bridge InputStreamReader e OutputStreamWriter che rappresentano classi di collegamento tra Stream di byte e Stream di caratteri:

public class BytesToCharsDemoUTF8 {

	private static final String sourcePath = "/source/testASCII.txt";
	private static final String destinationPath = "/destination/testASCII.txt";

	public static void main(String[] args) throws IOException {
		
        FileInputStream sourceStream = new FileInputStream(sourcePath);
        InputStreamReader charSourceStream = new InputStreamReader(sourceStream,"ASCII");
        FileOutputStream destStream = new FileOutputStream(destinationPath);
        OutputStreamWriter charDestStream = new OutputStreamWriter(destStream,"ASCII");
        
	}
}

Per questa nuova demo, facciamo uso di un file di testo in formato ASCII contenuto nel codice allegato. L’aspetto importante da notare, oltre al Chain di collegamento tra le due tipologie di Stream, è la specifica del tipo di encoding come secondo parametro dei costruttori delle classi InputStreamReader e OutputStreamWriter.

La parte che completa il codice legge i dati attraverso un buffer di caratteri:

public class BytesToCharsDemoUTF8 {

	private static final String sourcePath = "/source/testASCII.txt";
	private static final String destinationPath = "/destination/testASCII.txt";

	public static void main(String[] args) throws IOException {
		
        FileInputStream sourceStream = new FileInputStream(sourcePath);
        InputStreamReader charSourceStream = new InputStreamReader(sourceStream,"ASCII");
        FileOutputStream destStream = new FileOutputStream(destinationPath);
        OutputStreamWriter charDestStream = new OutputStreamWriter(destStream,"ASCII");
        
        char[] buffer = new char[100];
        int charactersRead=0;
        while ( (charactersRead=charSourceStream.read(buffer))!=-1) {  
          charDestStream.write(buffer,0,charactersRead);
        }
		
     	charSourceStream.close();
        charDestStream.close();
        destStream.close();
        sourceStream.close();
	}
}

Partendo dall’esempio precedente potremmo realizzare un applicativo Client-Server nel quale un’applicazione client invia linee di testo verso un programma server che si limita a restituirle come risposta; nel prossimo capitolo capiremo in che modo sia possibile gestire questo tipo di eco-server.

Tutte le lezioni

1 ... 42 43 44 ... 104

Se vuoi aggiornamenti su Classi per lo Stream orientate al carattere di Java inserisci la tua e-mail nel box qui sotto:
Tags:
 
X
Se vuoi aggiornamenti su Classi per lo Stream orientate al carattere di Java

inserisci la tua e-mail nel box qui sotto:

Ho letto e acconsento l'informativa sulla privacy

Acconsento al trattamento di cui al punto 3 dell'informativa sulla privacy