In questo tutorial, impareremo a conoscere Java OutputStreamWriter e i suoi metodi con l'aiuto di esempi.
La OutputStreamWriter
classe del java.io
pacchetto può essere utilizzata per convertire i dati in forma di caratteri in dati in forma di byte.
Estende la classe astratta Writer
.
La OutputStreamWriter
classe funziona con altri flussi di output. È anche noto come ponte tra flussi di byte e flussi di caratteri. Questo perché OutputStreamWriter
converte 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.OutputStreamWriter
prima 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 OutputStreamWriter
output con FileOutputStream
nome 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 Charset
classe per specificare il tipo di codifica dei caratteri.
Metodi di OutputStreamWriter
La OutputStreamWriter
classe fornisce implementazioni per diversi metodi presenti nella Writer
classe.
metodo write ()
write()
- scrive un singolo personaggio allo scrittorewrite(char() array)
- scrive i caratteri dall'array specificato nel writerwrite(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).