فئة جافا BufferedOutputStream
في Java، يتم استخدام فئة BufferedOutputStream لكتابة البيانات إلى دفق الإخراج بشكل أكثر كفاءة. فهو يضيف مخزنًا مؤقتًا إلى دفق إخراج آخر مما يقلل عدد عمليات الإدخال / الإخراج عن طريق تخزين البيانات مؤقتًا في الذاكرة قبل كتابتها إلى الوجهة (مثل الملف).
إنه ينتمي إلى حزمة java.io ويمتد إلى فئة FilterOutputStream.
إعلان الطبقة
تعمل الفئة العامة BufferedOutputStream على توسيع FilterOutputStream
- يعمل على تحسين أداء الإدخال/الإخراج باستخدام مخزن مؤقت لتقليل الوصول المباشر إلى القرص.
- تتم كتابة البيانات إلى المخزن المؤقت وفقط عندما يكون المخزن المؤقت ممتلئًا (أو متدفقًا) يتم إرساله إلى دفق الإخراج الأساسي.
- يُستخدم عادةً مع FileOutputStream.
- يساعد في كتابة بيانات البايت مثل الصور والملفات النصية والبيانات الثنائية.
البنائين
- BufferedOutputStream (إخراج OutputStream): ينشئ دفق إخراج مخزَّنًا بحجم مخزن مؤقت افتراضي يبلغ 8192 بايت.
- BufferedOutputStream (حجم OutputStream 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 (); } } }
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 (); } } }
الإخراج (محتوى الإخراج.txt):
BufferedOutputStream في مثال جافا
مثال 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 (); } } }
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 (); } } }
الإخراج (محتوى الأسطر القليلة الأولى كبيرة.txt):
السطر 0
السطر 1
السطر 2
...
المزايا
- أداء كتابة أسرع مقارنة بالتدفقات غير المخزنة.
- يقلل من عدد عمليات الكتابة الفعلية.
- يسمح بكتابة البيانات الكبيرة بكفاءة.