Σε αυτό το σεμινάριο, θα μάθουμε για το Java ByteArrayOutputStream και τις μεθόδους του με τη βοήθεια παραδειγμάτων.
Η ByteArrayOutputStream
κλάση του java.io
πακέτου μπορεί να χρησιμοποιηθεί για την εγγραφή μιας σειράς δεδομένων εξόδου (σε byte).
Επεκτείνει την OutputStream
αφηρημένη τάξη.
Σημείωση : ByteArrayOutputStream
Διατηρεί έναν εσωτερικό πίνακα byte για την αποθήκευση των δεδομένων.
Δημιουργήστε ένα ByteArrayOutputStream
Για να δημιουργήσουμε μια ροή εξόδου πίνακα byte, πρέπει java.io.ByteArrayOutputStream
πρώτα να εισαγάγουμε το πακέτο. Μόλις εισαγάγουμε το πακέτο, εδώ είναι πώς μπορούμε να δημιουργήσουμε μια ροή εξόδου.
// Creates a ByteArrayOutputStream with default size ByteArrayOutputStream out = new ByteArrayOutputStream();
Εδώ, δημιουργήσαμε μια ροή εξόδου που θα γράψει δεδομένα σε έναν πίνακα byte με προεπιλεγμένο μέγεθος 32 byte. Ωστόσο, μπορούμε να αλλάξουμε το προεπιλεγμένο μέγεθος του πίνακα.
// Creating a ByteArrayOutputStream with specified size ByteArrayOutputStream out = new ByteArrayOutputStream(int size);
Εδώ, το μέγεθος καθορίζει το μήκος του πίνακα.
Μέθοδοι του ByteArrayOutputStream
Η ByteArrayOutputStream
τάξη παρέχει την εφαρμογή των διαφορετικών μεθόδων που υπάρχουν στην OutputStream
τάξη.
μέθοδος ()
write(int byte)
- γράφει το καθορισμένο byte στη ροή εξόδουwrite(byte() array)
- γράφει τα byte από τον καθορισμένο πίνακα στη ροή εξόδουwrite(byte() arr, int start, int length)
- γράφει τον αριθμό των byte ίσο με το μήκος της ροής εξόδου από έναν πίνακα που ξεκινά από την αρχή της θέσηςwriteTo(ByteArrayOutputStream out1)
- γράφει ολόκληρα τα δεδομένα της τρέχουσας ροής εξόδου στην καθορισμένη ροή εξόδου
Παράδειγμα: ByteArrayOutputStream για συγγραφή δεδομένων
import java.io.ByteArrayOutputStream; class Main ( public static void main(String() args) ( String data = "This is a line of text inside the string."; try ( // Creates an output stream ByteArrayOutputStream out = new ByteArrayOutputStream(); byte() array = data.getBytes(); // Writes data to the output stream out.write(array); // Retrieves data from the output stream in string format String streamData = out.toString(); System.out.println("Output stream: " + streamData); out.close(); ) catch(Exception e) ( e.getStackTrace(); ) ) )
Παραγωγή
Ροή εξόδου: Αυτή είναι μια γραμμή κειμένου μέσα στη συμβολοσειρά.
Στο παραπάνω παράδειγμα, έχουμε δημιουργήσει μια ροή εξόδου συστοιχίας byte που ονομάζεται έξοδος.
ByteArrayOutputStream output = new ByteArrayOutputStream();
Για να γράψουμε τα δεδομένα στη ροή εξόδου, χρησιμοποιήσαμε τη write()
μέθοδο.
Σημείωση : Η getBytes()
μέθοδος που χρησιμοποιείται στο πρόγραμμα μετατρέπει μια συμβολοσειρά σε μια σειρά byte.
Πρόσβαση στα δεδομένα από το ByteArrayOutputStream
toByteArray()
- επιστρέφει τον πίνακα που υπάρχει μέσα στη ροή εξόδουtoString()
- επιστρέφει όλα τα δεδομένα της ροής εξόδου σε μορφή συμβολοσειράς
Για παράδειγμα,
import java.io.ByteArrayOutputStream; class Main ( public static void main(String() args) ( String data = "This is data."; try ( // Creates an output stream ByteArrayOutputStream out = new ByteArrayOutputStream(); // Writes data to the output stream out.write(data.getBytes()); // Returns an array of bytes byte() byteData = out.toByteArray(); System.out.print("Data using toByteArray(): "); for(int i=0; i
Output
Data using toByteArray(): This is data. Data using toString(): This is data.
In the above example, we have created an array of bytes to store the data returned by the
toByteArray()
method.
We then have used the for loop to access each byte from the array. Here, each byte is converted into the corresponding character using typecasting.
close() Method
To close the output stream, we can use the
close()
method.
However, the
close()
method has no effect in ByteArrayOutputStream
class. We can use the methods of this class even after the close()
method is called.
Other Methods of ByteArrayOutputStream
Μέθοδοι | Περιγραφές |
---|---|
size() | επιστρέφει το μέγεθος του πίνακα στη ροή εξόδου |
flush() | καθαρίζει τη ροή εξόδου |
To learn more, visit Java ByteArrayOutputStream (official Java documentation).