Σε αυτό το σεμινάριο, θα μάθουμε για το Java BufferedOutputStream και τις μεθόδους του με τη βοήθεια παραδειγμάτων.
Η BufferedOutputStream
κλάση του java.io
πακέτου χρησιμοποιείται με άλλες ροές εξόδου για την πιο αποτελεσματική εγγραφή των δεδομένων (σε byte).
Επεκτείνει την OutputStream
αφηρημένη τάξη.
Εργασία του BufferedOutputStream
Η BufferedOutputStream
διατηρεί ένα εσωτερικό ρυθμιστικό διάλυμα των 8192 bytes .
Κατά τη διάρκεια της εγγραφής, τα byte γράφονται στο εσωτερικό buffer αντί για το δίσκο. Μόλις γεμίσει το buffer ή κλείσει η ροή, ολόκληρο το buffer γράφεται στο δίσκο.
Ως εκ τούτου, ο αριθμός της επικοινωνίας με το δίσκο μειώνεται. Αυτός είναι ο λόγος για τον οποίο η γραφή bytes χρησιμοποιεί ταχύτερα BufferedOutputStream
.
Δημιουργήστε μια BufferedOutputStream
Για να δημιουργήσουμε ένα BufferedOutputStream
, πρέπει java.io.BufferedOutputStream
πρώτα να εισαγάγουμε το πακέτο. Μόλις εισαγάγουμε το πακέτο εδώ είναι πώς μπορούμε να δημιουργήσουμε τη ροή εξόδου.
// Creates a FileOutputStream FileOutputStream file = new FileOutputStream(String path); // Creates a BufferedOutputStream BufferedOutputStream buffer = new BufferOutputStream(file);
Στο παραπάνω παράδειγμα, έχουμε δημιουργήσει ένα BufferdOutputStream
όνομα buffer με το FileOutputStream
όνομα του αρχείου.
Εδώ, το εσωτερικό buffer έχει το προεπιλεγμένο μέγεθος 8192 byte. Ωστόσο, μπορούμε επίσης να καθορίσουμε το μέγεθος του εσωτερικού buffer.
// Creates a BufferedOutputStream with specified size internal buffer BufferedOutputStream buffer = new BufferOutputStream(file, int size);
Το buffer θα σας βοηθήσει να γράψετε bytes σε αρχεία πιο γρήγορα.
Μέθοδοι BufferedOutputStream
Η BufferedOutputStream
τάξη παρέχει υλοποιήσεις για διαφορετικές μεθόδους στην OutputStream
τάξη.
μέθοδος ()
write()
- γράφει ένα byte στο εσωτερικό buffer της ροής εξόδουwrite(byte() array)
- γράφει τα byte από τον καθορισμένο πίνακα στη ροή εξόδουwrite(byte() arr, int start, int length)
- γράφει τον αριθμό των byte ίσο με το μήκος της ροής εξόδου από έναν πίνακα που ξεκινά από την αρχή της θέσης
Παράδειγμα: BufferedOutputStream για εγγραφή δεδομένων σε ένα αρχείο
import java.io.FileOutputStream; import java.io.BufferedOutputStream; 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 a BufferedOutputStream BufferedOutputStream output = new BufferedOutputStream(file); byte() array = data.getBytes(); // Writes data to the output stream output.write(array); output.close(); ) catch (Exception e) ( e.getStackTrace(); ) ) )
Στο παραπάνω παράδειγμα, έχουμε δημιουργήσει μια αποθηκευμένη ροή εξόδου που ονομάζεται έξοδος μαζί με FileOutputStream
. Η ροή εξόδου συνδέεται με το αρχείο output.txt .
FileOutputStream file = new FileOutputStream("output.txt"); BufferedOutputStream output = new BufferedOutputStream(file);
Για να γράψουμε δεδομένα στο αρχείο, χρησιμοποιήσαμε τη write()
μέθοδο.
Εδώ όταν εκτελούμε το πρόγραμμα, το αρχείο output.txt είναι γεμάτο με το ακόλουθο περιεχόμενο.
This is a line of text inside the file.
Σημείωση : Η getBytes()
μέθοδος που χρησιμοποιείται στο πρόγραμμα μετατρέπει μια συμβολοσειρά σε μια σειρά byte.
flush () Μέθοδος
Για να διαγράψετε το εσωτερικό buffer, μπορούμε να χρησιμοποιήσουμε τη flush()
μέθοδο. Αυτή η μέθοδος αναγκάζει τη ροή εξόδου να γράψει όλα τα δεδομένα που υπάρχουν στο buffer στο αρχείο προορισμού. Για παράδειγμα,
import java.io.FileOutputStream; import java.io.BufferedOutputStream; public class Main ( public static void main(String() args) ( String data = "This is a demo of the flush method"; try ( // Creates a FileOutputStream FileOutputStream file = new FileOutputStream(" flush.txt"); // Creates a BufferedOutputStream BufferedOutputStream buffer = new BufferedOutputStream(file); // Writes data to the output stream buffer.write(data.getBytes()); // Flushes data to the destination buffer.flush(); System.out.println("Data is flushed to the file."); buffer.close(); ) catch(Exception e) ( e.getStackTrace(); ) ) )
Παραγωγή
Τα δεδομένα μεταφέρονται στο αρχείο.
Όταν εκτελούμε το πρόγραμμα, το αρχείο flush.txt γεμίζει με το κείμενο που αντιπροσωπεύεται από τα δεδομένα συμβολοσειράς.
κλείσιμο () Μέθοδος
Για να κλείσουμε τη ρυθμισμένη ροή εξόδου, μπορούμε να χρησιμοποιήσουμε τη close()
μέθοδο. Μόλις κληθεί η μέθοδος, δεν μπορούμε να χρησιμοποιήσουμε τη ροή εξόδου για την εγγραφή των δεδομένων.
Για να μάθετε περισσότερα, επισκεφθείτε το Java BufferedOutputStream (επίσημη τεκμηρίωση Java).