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

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

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