BufferedReader
BufferedReader هو دفق إدخال حرف مخزنة. يرث من القارئ.
الغرض من BufferedReader هو إضافة بعض وظائف التخزين المؤقت إلى تدفقات إدخال الأحرف الأخرى.
عند إنشاء BufferReader ، سنحدد القارئ كمعلمة من خلال مُنشئه. سوف يقرأ Bufferreader البيانات الموجودة في القارئ على دفعات ، وفي كل مرة يتم فيها قراءة جزء منه في المخزن المؤقت ؛ بعد تشغيل هذا الجزء من البيانات في المخزن المؤقت ، تتم قراءة الجزء التالي من البيانات من القارئ.
لماذا أحتاج إلى التخزين المؤقت؟ السبب بسيط للغاية ، قضايا الكفاءة! يتم بالفعل تخزين البيانات الموجودة في المخزن المؤقت في الذاكرة ، بينما يمكن تخزين البيانات الأولية في القرص الصلب أو nandflash ؛ نحن نعلم أن قراءة البيانات من الذاكرة أسرع على الأقل 10 مرات من قراءة البيانات من القرص الثابت.
إذن لماذا لا تقرأ فقط جميع البيانات في المخزن المؤقت في وقت واحد؟ أولاً ، قد يستغرق الأمر وقتًا طويلاً لقراءة جميع البيانات. ثانياً ، سعر الذاكرة مكلف للغاية ، والقدرة ليست كبيرة مثل القرص الصلب.
مثال:
استيراد java.io.bufferedreader {private static final int len = 5 ؛ public static void main (string [] args) {testbufferedReader () ؛ } / ** * وظيفة اختبار API BufferedReader * / private static void testbufferedreader () {// إنشاء دفق حرف bufferredreader ، وهو صفيف Arrayletters Try {file = ملف جديد ("bufferedReader.txt") ؛ BufferedReader في = جديد BufferEdReader (New FileReader (file)) ؛ // اقرأ 5 أحرف من دفق الأحرف. "ABCDE" لـ (int i = 0 ؛ i <len ؛ i ++) {// إذا كان يمكنك متابعة القراءة الحرف التالي ، اقرأ الحرف التالي if (in.ready ()) {// قراءة "الحرف التالي من دفق الحرف" int tmp = in.read () ؛ system.out.printf ("٪ d: ٪ c/n" ، i ، tmp) ؛ }} // إذا كان "دفق الحرف هذا" لا يدعم وظيفة وضع العلامات ، فخرج مباشرة إذا (! in.marksupported ()) {system.out.println ("اجعل غير مدعوم!") ؛ يعود ؛ } // mark "موضع الفهرس الحالي" ، أي علامة على عنصر الموضع السادس - "f" // 1024 يتوافق مع marklimit in.mark (1024) ؛ // تخطي 22 حرفًا. in.skip (22) ؛ // قراءة 5 أحرف char [] buf = new char [len] ؛ in.Read (buf ، 0 ، len) ؛ system.out.printf ("buf = ٪ s/n" ، string.valueof (buf)) ؛ // اقرأ البيانات المتبقية لنظام الخط. // إعادة تعيين "فهرس دفق الإدخال" إلى الموضع الذي يحمل علامة Mark () ، أي إعادة تعيين إلى "F". in.Reset () ؛ // اقرأ 5 أحرف من "إعادة تعيين دفق حرف" إلى BUF. وهذا هو ، اقرأ "fghij" in.read (buf ، 0 ، len) ؛ system.out.printf ("buf = ٪ s/n" ، string.valueof (buf)) ؛ in.close () ؛ } catch (fileNotFoundException e) {e.printStackTrace () ؛ } catch (SecurityException e) {E.PrintStackTrace () ؛ } catch (ioException e) {E.PrintStackTrace () ؛ }}} محتوى BufferedReader.txt قراءة في البرنامج كما يلي:
ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ
نتائج التشغيل:
0: A1: B2: C3: D4: ebuf = 01234Readline = 56789BUF = FGHIJ
المخزن المؤقت
BufferedWriter هو دفق إخراج الأحرف المخزنة. يرث من الكاتب.
الغرض من BufferedWriter هو إضافة بعض وظائف التخزين المؤقت إلى تدفقات إخراج الأحرف الأخرى.
BufferyWriter المخزن المؤقت البيانات من خلال صفيف الأحرف. عندما يكون المخزن المؤقت ممتلئًا أو يقوم المستخدم باستدعاء وظيفة Flush () ، فإنه يكتب بيانات المخزن المؤقت إلى دفق الإخراج.
مثال:
استيراد java.io.bufferedWriter ؛ استيراد java.io.file ؛ استيراد java.io.outputstream ؛ استيراد java.io.filewRiter ؛ استيراد java.io.ioExcept لين = 5 ؛ // المقابلة للحالة الإنجليزية "ABCDEFGHIJKLMNOPQRSTUVWXYZ" // Final Static Final Char [] Arrayletters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" ؛ char Final Static Final [] Arrayletters = New Char [] {'a' ، 'b' ، 'c' ، 'd' ، 'e' ، 'f' ، 'g' ، 'h' ، 'i' ، 'j' ، 'k' ، 'l' ، 'm' ، 'n' ، 'o' ، 'p' ، 'q' ، 's' ، 's' ، 't' ، 'u' ، 'v' ، 'x' ، y ' public static void main (string [] args) {testbufferedWriter () ؛ } / *** وظيفة اختبار API BufferDwriter* / private static void testbufferedWriter () {// قم بإنشاء bufferedWriter المقابلة لدفق إخراج الملفات "// أن حجم المخزن المؤقت المقابل هو 16 ، وهذا هو ، عندما تكون البيانات العازلة> = 16 ، سيتم كتابة محتوى المخزن المؤقت تلقائيًا إلى دفق الإخراج. حاول {file file = ملف جديد ("bufferWriter.txt") ؛ BufferedWriter Out = جديد bufferedWriter (FilewRiter (ملف جديد)) ؛ // اكتب الأحرف العشرة الأولى من صفيف Arrayletters إلى دفق الإخراج Out.write (Arrayletters ، 0 ، 10) ؛ // اكتب "خط الفاصل/n" إلى دفق الإخراج Out.write ('/n') ؛ out.flush () ؛ // readuSerInput () ؛ out.close () ؛ } catch (fileNotFoundException e) {e.printStackTrace () ؛ } catch (SecurityException e) {E.PrintStackTrace () ؛ } catch (ioException e) {E.PrintStackTrace () ؛ }} / *** اقرأ إدخال المستخدم* / private static void readuSerInput () {system.out.println ("الرجاء إدخال نص:") ؛ قارئ الماسح الضوئي = ماسح ضوئي جديد (System.in) ؛ // انتظر سلسلة إدخال str = reader.next () ؛ system.out.printf ("الإدخال هو: ٪ s/n" ، str) ؛ }}النتيجة تشغيل: يتم إنشاء ملف "BufferWriter.txt" ، ومحتوى الملف هو "ABCDEFGHIJ".