Java BufferedOutputStream Class

ב-Java משתמשים במחלקת BufferedOutputStream כדי לכתוב נתונים לזרם פלט בצורה יעילה יותר. הוא מוסיף מאגר לזרם פלט אחר ומפחית את מספר פעולות ה-I/O על ידי אחסון זמני של נתונים בזיכרון לפני כתיבתם ליעד (כמו קובץ).

זה שייך לחבילת java.io ומרחיב את מחלקת FilterOutputStream.

הצהרת כיתה

מחלקה ציבורית BufferedOutputStream מרחיבה את FilterOutputStream

  • משפר את ביצועי ה-I/O על ידי שימוש במאגר להפחתת גישה ישירה לדיסק.
  • הנתונים נכתבים למאגר ורק כאשר המאגר מלא (או נשטף) הם נשלחים לזרם הפלט הבסיסי.
  • משמש בדרך כלל עם FileOutputStream.
  • עוזר בכתיבת נתוני בתים כגון קבצי טקסט של תמונות ונתונים בינאריים.

בונים

  • BufferedOutputStream(OutputStream out): יוצר זרם פלט מאוחסן עם גודל מאגר ברירת מחדל של 8192 בתים.
  • BufferedOutputStream (גודל OutputStream out int): יוצר זרם פלט מאוחסן עם גודל המאגר שצוין.

שיטות חשובות

שִׁיטָה תֵאוּר
void write(int b) כותב בית בודד לזרם הפלט.
void write(byte[] b int off int len) כותב חלק ממערך הבתים לזרם הפלט.
void flush() שוטף את המאגר ומאלץ לכתוב כל בתים של פלט מאוחסנים.
void close() סוגר את הזרם שוטף אותו תחילה.

Java
   import     java.io.*  ;   public     class   BufferedOutputStreamExample     {      public     static     void     main  (  String  []     args  )     {      String     data     =     'BufferedOutputStream in Java Example'  ;      try     {      FileOutputStream     fileOut     =     new     FileOutputStream  (  'output.txt'  );      BufferedOutputStream     bufferOut     =     new     BufferedOutputStream  (  fileOut  );      byte  []     bytes     =     data  .  getBytes  ();      bufferOut  .  write  (  bytes  );      bufferOut  .  close  ();      System  .  out  .  println  (  'Data written successfully.'  );      }     catch     (  IOException     e  )     {      e  .  printStackTrace  ();      }      }   }   

פלט (תוכן של output.txt):

BufferedOutputStream בדוגמה של Java

דוגמה 2: שימוש בשיטת flush()

Java
   import     java.io.*  ;   public     class   FlushExample     {      public     static     void     main  (  String  []     args  )     {      try     {      FileOutputStream     fileOut     =     new     FileOutputStream  (  'flush.txt'  );      BufferedOutputStream     bufferOut     =     new     BufferedOutputStream  (  fileOut  );      bufferOut  .  write  (  'Hello'  .  getBytes  ());      bufferOut  .  flush  ();     // ensures data is written immediately      bufferOut  .  close  ();      System  .  out  .  println  (  'Flush example completed.'  );      }     catch     (  IOException     e  )     {      e  .  printStackTrace  ();      }      }   }   

פלט (תוכן של flush.txt):

שלום

Java
   import     java.io.*  ;   public     class   LargeDataExample     {      public     static     void     main  (  String  []     args  )     {      try     {      FileOutputStream     fileOut     =     new     FileOutputStream  (  'large.txt'  );      BufferedOutputStream     bufferOut     =     new     BufferedOutputStream  (  fileOut       8192  );     // custom buffer size      for     (  int     i     =     0  ;     i      <     1000  ;     i  ++  )     {      bufferOut  .  write  ((  'Line '     +     i     +     'n'  ).  getBytes  ());      }      bufferOut  .  close  ();      System  .  out  .  println  (  'Large data written successfully.'  );      }     catch     (  IOException     e  )     {      e  .  printStackTrace  ();      }      }   }   

פלט (תוכן של large.txt כמה שורות ראשונות):

שורה 0

שורה 1

שורה 2

...

יתרונות

  • ביצועי כתיבה מהירים יותר בהשוואה לזרמים ללא מאגר.
  • מפחית את מספר פעולות הכתיבה הפיזיות.
  • מאפשר כתיבת נתונים גדולים ביעילות.
צור חידון