Java OutputStreamWriter (con esempi)

In questo tutorial, impareremo a conoscere Java OutputStreamWriter e i suoi metodi con l'aiuto di esempi.

La OutputStreamWriterclasse del java.iopacchetto può essere utilizzata per convertire i dati in forma di caratteri in dati in forma di byte.

Estende la classe astratta Writer.

La OutputStreamWriterclasse funziona con altri flussi di output. È anche noto come ponte tra flussi di byte e flussi di caratteri. Questo perché OutputStreamWriterconverte i suoi caratteri in byte.

Ad esempio, alcuni caratteri richiedono la memorizzazione di 2 byte nella memoria. Per scrivere tali dati possiamo utilizzare il writer del flusso di output che converte il carattere in byte corrispondenti e memorizza i byte insieme.

Crea un OutputStreamWriter

Per creare un OutputStreamWriter, dobbiamo java.io.OutputStreamWriterprima importare il pacchetto. Una volta importato il pacchetto, ecco come possiamo creare il writer del flusso di output.

 // Creates an OutputStream FileOutputStream file = new FileOutputStream(String path); // Creates an OutputStreamWriter OutputStreamWriter output = new OutputStreamWriter(file); 

Nell'esempio precedente, abbiamo creato un OutputStreamWriteroutput con FileOutputStreamnome insieme al file denominato.

Qui stiamo usando la codifica dei caratteri predefinita per scrivere i caratteri nel flusso di output.

Tuttavia, possiamo specificare il tipo di codifica dei caratteri ( UTF8 o UTF16 ) da utilizzare per scrivere i dati.

 // Creates an OutputStreamWriter specifying the character encoding OutputStreamWriter output = new OutputStreamWriter(file, Charset cs); 

Qui abbiamo usato la Charsetclasse per specificare il tipo di codifica dei caratteri.

Metodi di OutputStreamWriter

La OutputStreamWriterclasse fornisce implementazioni per diversi metodi presenti nella Writerclasse.

metodo write ()

  • write() - scrive un singolo personaggio allo scrittore
  • write(char() array) - scrive i caratteri dall'array specificato nel writer
  • write(String data) - scrive la stringa specificata nel writer

Esempio: OutputStreamWriter per scrivere dati su un file

 import java.io.FileOutputStream; import java.io.OutputStreamWriter; public class Main ( public static void main(String args()) ( String data = "This is a line of text inside the file."; try ( // Creates a FileOutputStream FileOutputStream file = new FileOutputStream("output.txt"); // Creates an OutputStreamWriter OutputStreamWriter output = new OutputStreamWriter(file); // Writes string to the file output.write(data); // Closes the writer output.close(); ) catch (Exception e) ( e.getStackTrace(); ) ) ) 

Nell'esempio precedente, abbiamo creato un lettore del flusso di output utilizzando il flusso di output del file. Il lettore del flusso di output è collegato al file output.txt .

 FileOutputStream file = new FileOutputStream("output.txt"); OutputStreamWriter output = new OutputStreamWriter(file); 

Per scrivere dati nel file, abbiamo utilizzato il write()metodo.

Qui, quando eseguiamo il programma, il file output.txt viene riempito con il seguente contenuto.

 This is a line of text inside the file. 

metodo getEncoding ()

Il getEncoding()metodo può essere utilizzato per ottenere il tipo di codifica utilizzato per scrivere i dati nel flusso di output. Per esempio,

 import java.io.OutputStreamWriter; import java.nio.charset.Charset; import java.io.FileOutputStream; class Main ( public static void main(String() args) ( try ( // Creates an output stream FileOutputStream file = new FileOutputStream("output.txt"); // Creates an output stream reader with default encoding OutputStreamWriter output1 = new OutputStreamWriter(file); // Creates an output stream reader specifying the encoding OutputStreamWriter output2 = new OutputStreamWriter(file, Charset.forName("UTF8")); // Returns the character encoding of the output stream System.out.println("Character encoding of output1: " + output1.getEncoding()); System.out.println("Character encoding of output2: " + output2.getEncoding()); // Closes the reader output1.close(); output2.close(); ) catch(Exception e) ( e.getStackTrace(); ) ) ) 

Produzione

 La codifica dei caratteri di output1: Cp1252 La codifica dei caratteri di output2: UTF8 

Nell'esempio precedente, abbiamo creato 2 stream writer di output denominati output1 e output2.

  • output1 non specifica la codifica dei caratteri. Quindi il getEncoding()metodo restituisce la codifica dei caratteri predefinita.
  • output2 specifica la codifica dei caratteri, UTF8 . Quindi il getEncoding()metodo restituisce la codifica dei caratteri specificata.

Nota : abbiamo utilizzato il Charset.forName()metodo per specificare il tipo di codifica dei caratteri. Per saperne di più, visita Java Charset (documentazione Java ufficiale).

metodo close ()

Per chiudere il writer del flusso di output, possiamo utilizzare il close()metodo. Una volta close()chiamato il metodo, non possiamo utilizzare il writer per scrivere i dati.

Altri metodi di OutputStreamWriter

Metodo Descrizione
flush() obbliga a scrivere tutti i dati presenti nel writer nella corrispondente destinazione
append() inserisce il carattere specificato nel writer corrente

Per saperne di più, visita Java OutputStreamWriter (documentazione Java ufficiale).

Articoli interessanti...