Java OutputStreamWriter (με παραδείγματα)

Σε αυτό το σεμινάριο, θα μάθουμε για το Java OutputStreamWriter και τις μεθόδους του με τη βοήθεια παραδειγμάτων.

Η OutputStreamWriterκλάση του java.ioπακέτου μπορεί να χρησιμοποιηθεί για τη μετατροπή δεδομένων σε μορφή χαρακτήρα σε δεδομένα σε μορφή byte.

Επεκτείνει την αφηρημένη τάξη Writer.

Η OutputStreamWriterτάξη λειτουργεί με άλλες ροές εξόδου. Είναι επίσης γνωστή ως γέφυρα μεταξύ ροών byte και ροών χαρακτήρων. Αυτό συμβαίνει επειδή OutputStreamWriterμετατρέπει τους χαρακτήρες του σε byte.

Για παράδειγμα, ορισμένοι χαρακτήρες απαιτούν αποθήκευση 2 byte στο χώρο αποθήκευσης. Για να γράψουμε τέτοια δεδομένα μπορούμε να χρησιμοποιήσουμε το πρόγραμμα δημιουργίας ροής εξόδου που μετατρέπει τον χαρακτήρα σε αντίστοιχα byte και αποθηκεύει τα byte μαζί.

Δημιουργήστε ένα OutputStreamWriter

Για να δημιουργήσουμε ένα OutputStreamWriter, πρέπει java.io.OutputStreamWriterπρώτα να εισαγάγουμε το πακέτο. Μόλις εισαγάγουμε το πακέτο εδώ είναι πώς μπορούμε να δημιουργήσουμε το πρόγραμμα εξόδου ροής.

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

Στο παραπάνω παράδειγμα, έχουμε δημιουργήσει μια OutputStreamWriterονομαστική έξοδο μαζί με το FileOutputStreamόνομα αρχείου.

Εδώ, χρησιμοποιούμε την προεπιλεγμένη κωδικοποίηση χαρακτήρων για να γράψουμε χαρακτήρες στη ροή εξόδου.

Ωστόσο, μπορούμε να καθορίσουμε τον τύπο κωδικοποίησης χαρακτήρων ( UTF8 ή UTF16 ) που θα χρησιμοποιηθεί για την εγγραφή δεδομένων.

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

Εδώ, χρησιμοποιήσαμε την Charsetκλάση για να καθορίσουμε τον τύπο κωδικοποίησης χαρακτήρων.

Μέθοδοι OutputStreamWriter

Η OutputStreamWriterτάξη παρέχει υλοποιήσεις για διαφορετικές μεθόδους που υπάρχουν στην Writerτάξη.

μέθοδος ()

  • write() - γράφει έναν μόνο χαρακτήρα στον συγγραφέα
  • write(char() array) - γράφει τους χαρακτήρες από τον καθορισμένο πίνακα στον συγγραφέα
  • write(String data) - γράφει την καθορισμένη συμβολοσειρά στον συγγραφέα

Παράδειγμα: OutputStreamWriter για την εγγραφή δεδομένων σε ένα αρχείο

 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(); ) ) ) 

Στο παραπάνω παράδειγμα, έχουμε δημιουργήσει έναν αναγνώστη ροής εξόδου χρησιμοποιώντας τη ροή εξόδου αρχείων. Ο αναγνώστης ροής εξόδου συνδέεται με το αρχείο output.txt .

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

Για να γράψουμε δεδομένα στο αρχείο, χρησιμοποιήσαμε τη write()μέθοδο.

Εδώ, όταν εκτελούμε το πρόγραμμα, το αρχείο output.txt είναι γεμάτο με το ακόλουθο περιεχόμενο.

 This is a line of text inside the file. 

getEncoding () Μέθοδος

Η getEncoding()μέθοδος μπορεί να χρησιμοποιηθεί για να πάρει τον τύπο κωδικοποίησης που χρησιμοποιείται για την εγγραφή δεδομένων στη ροή εξόδου. Για παράδειγμα,

 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(); ) ) ) 

Παραγωγή

 Η κωδικοποίηση χαρακτήρων της εξόδου 1: Cp1252 Η κωδικοποίηση χαρακτήρων της εξόδου 2: UTF8 

Στο παραπάνω παράδειγμα, έχουμε δημιουργήσει 2 συγγραφείς ροής εξόδου με όνομα output1 και output2.

  • Το output1 δεν καθορίζει την κωδικοποίηση χαρακτήρων. Εξ ου και η getEncoding()μέθοδος επιστρέφει την προεπιλεγμένη κωδικοποίηση χαρακτήρων.
  • Το output2 καθορίζει την κωδικοποίηση χαρακτήρων, UTF8 . Εξ ου και η getEncoding()μέθοδος επιστρέφει την καθορισμένη κωδικοποίηση χαρακτήρων.

Σημείωση : Χρησιμοποιήσαμε τη Charset.forName()μέθοδο για να καθορίσουμε τον τύπο κωδικοποίησης χαρακτήρων. Για να μάθετε περισσότερα, επισκεφθείτε το Java Charset (επίσημη τεκμηρίωση Java).

κλείσιμο () Μέθοδος

Για να κλείσουμε το πρόγραμμα εξόδου ροής, μπορούμε να χρησιμοποιήσουμε τη close()μέθοδο. Μόλις close()κληθεί η μέθοδος, δεν μπορούμε να χρησιμοποιήσουμε τον συγγραφέα για να γράψουμε τα δεδομένα.

Άλλες μέθοδοι του OutputStreamWriter

Μέθοδος Περιγραφή
flush() αναγκάζει να γράψει όλα τα δεδομένα που υπάρχουν στον συγγραφέα στον αντίστοιχο προορισμό
append() εισάγει τον καθορισμένο χαρακτήρα στον τρέχοντα συγγραφέα

Για να μάθετε περισσότερα, επισκεφθείτε το Java OutputStreamWriter (επίσημη τεκμηρίωση Java).

ενδιαφέροντα άρθρα...