في الآونة الأخيرة ، كنت أتعلم تدفقات IO ووجدت أن وظيفة Flush () تظهر في كل مرة. لقد راجعت وظيفتها والوظائف الرئيسية على النحو التالي
// -/ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
إجابة عامة وغير صحيحة:
يتم حفظ البيانات الموجودة في المخزن المؤقت حتى يتم امتلاء المخزن المؤقت. يمكنك أيضًا استخدام طريقة Flush لإجبار البيانات في المخزن المؤقت على كتابة أو استخدام طريقة Close () لإغلاق الدفق. قبل إغلاق الدفق ، يكتب دفق الإخراج المخزن المؤقت بيانات المخزن المؤقت في وقت واحد. فلاش () وإغلاق () كلاهما يجبران البيانات المراد كتابة ، وبالتالي فإن النتيجة هي نفسها. إذا لم تكتبها ، فستجد أنه لا يمكنك كتابتها بنجاح.
ردا على الإجابة أعلاه ، تم إعطاء إجابة دقيقة
FileOutputStream يرث OutputStream ولا يوفر إعادة كتابة طريقة Flush (). لذلك بغض النظر عن مقدار محتوى الكتابة ، فإنه سيمرر الدفق الثنائي مباشرة إلى I/O لنظام التشغيل الأساسي. تدفق ليس له أي تأثير. يمكن رؤية وظائف دفق الإدخال والإخراج للسلسلة المخزنة من الكلمة المخزنة التي تستخدمها. يجب أن يتواصل التطبيق مع الجهاز في كل مرة IO ، وهو منخفض جدًا. لذلك ، من أجل تحسين الكفاءة ، تتم كتابة المخزن المؤقت إلى المخزن المؤقت أولاً عند الكتابة إلى الجهاز. عندما يكون لدى المخزن المؤقت بيانات كافية ، سيتم كتابته على الجهاز ككل.
استخدام bufferedxxxstream. حجم المخزن المؤقت الافتراضي هو 8K. عند القراءة ، سيتم ملء المخزن المؤقت (أو يتم قراءة الملف) طوال الوقت. عند الكتابة ، سيتم إرسال المحتوى إلى المخزن المؤقت لـ kernel بعد أن يكون المخزن المؤقت ممتلئًا (أو عملية تدفق). سبب الكفاءة العالية هو تجنب الوقوع في نواة نظام التشغيل لكل قراءة بايت (هذه عملية تستغرق وقتًا طويلاً). للحصول على رمز محدد ، يرجى التحقق من واجهة برمجة التطبيقات بنفسك.
سأرفق أيضًا إجابة سؤال من Baidu.
Flush () يعني إجبار محتوى المخزن المؤقت على الكتابة. بسبب بعض آليات نظام التشغيل ، من أجل منع قراءة وكتابة القرص المستمر ، هناك مفهوم للتأخر في الكتابة. (احرص على عدم الخلط بينه وبين الفاكهة () تحديث) ، يتم استخدامه بشكل رئيسي في IO ، أي ، مسح البيانات العازلة. بشكل عام ، عند قراءة الدفق والكتابة ، تتم قراءة البيانات أولاً في الذاكرة ثم يتم كتابتها في ملف. عندما تقرأ البيانات ، لا يعني ذلك أن بياناتك قد كتبت ، لأنه لا يزال هناك جزء منها قد يترك في المخزن المؤقت للذاكرة. في هذا الوقت ، إذا اتصلت بالطريقة Close () وأغلق دفق القراءة والكتابة ، فسيتم فقد هذا الجزء من البيانات ، لذلك يجب عليك التدفق () قبل إغلاق دفق القراءة والكتابة. .
وينطبق الشيء نفسه على خادم شبكة الشبكة. من أجل منع إرسال رسالة بعد كتابة بايت ، هناك مفهوم للمخزن المؤقت ، مثل منطقة الذاكرة 64k ، عندما يكون المخزن المؤقت ممتلئًا ، يتم كتابته إلى القرص مرة واحدة (أو يتم إرساله إلى متصفح العميل).
يتم تنفيذ طريقة التدفق عمومًا عند اكتمال كتابة البرنامج. ثم اتبع الطريقة الإغلاق. على سبيل المثال:
// الحصول على دفق الإخراج. بالطبع ، يعتمد ذلك على البيئة المحددة. printWriter out = util.getWriter () ؛ out.println ("إخراج بعض المعلومات ، ربما كثيرًا") ؛ out.flush () ؛ out.close () ؛ببساطة ، طريقة Flush () هي إخراج جميع المحتويات المخزنة في الذاكرة (إخراج الدُفعات). شائع الاستخدام ، على سبيل المثال ، هو مثال نموذجي في فئة FilewRiter. بالإضافة إلى استخدام إخراج Flush ، ستكون المكالمة النهائية للطريقة الإغلاق هي أيضًا إخراج الدُفعات.
استيراد java.io.filewriter ؛ استيراد java.io.ioException ؛ الفئة العامة A04 {public static void main (string args []) {filewriter fw ؛ try {fw = new filewriter ("c: //try.txt") ؛ fw.write ("مرحبًا") ؛ // لم تتم إضافة هذه الجملة ، ولا يمكن كتابة الملف ، والملف فارغ! System.out.println ("OK") ؛ } catch (ioException e) {// todo acto catch block e.printstacktrace () ؛ }}}لخص
ما سبق هو كل محتوى هذه المقالة حول دور وطرق الاستخدام لوظائف التدفق بلغة Java. آمل أن يكون ذلك مفيدًا للجميع. يمكن للأصدقاء المهتمين الاستمرار في الرجوع إلى الموضوعات الأخرى ذات الصلة على هذا الموقع. إذا كانت هناك أي أوجه قصور ، فيرجى ترك رسالة لإشارةها. شكرا لك يا أصدقائك لدعمكم لهذا الموقع!