Σε αυτό το σεμινάριο, θα μάθουμε για το 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).