Java IO (Javase 6) - ساعدني في فهم آثار استخدام عينة من الجداول والكتاب

StackOverflow https://stackoverflow.com/questions/2243441

  •  19-09-2019
  •  | 
  •  

سؤال

BufferedWriter out = new BufferedWriter( new OutputStreamWriter( new BufferedOutputStream( new FileOutputStream("out.txt") ) ) );

لذلك اسمحوا لي أن أرى ما إذا كنت أفهم هذا: يتم فتح دفق إخراج البايت لملف "Out.txt". ثم يتم تغذيته إلى دفق إخراج مخزن مؤقت لإجراء عمليات الملف بشكل أسرع. يتم تغذية الدفق المخزن المؤقت لكاتب دفق الإخراج للسيدات من البايت إلى الأحرف. أخيرا، يتم تغذية هذا الكاتب كاتبة مخزنة ... مما يضيف طبقة أخرى من التخزين المؤقت؟

همم...

هل كانت مفيدة؟

المحلول

نعم انت صحيح

أفكر في هذه الحالة يمكنك القيام بعمل أقصر (انظر أيضا كتاب مخزن مؤقت)

BufferedWriter out = new BufferedWriter(new FileWriter("foo.out"));

أو إذا كنت تريد وظائف الطباعة لطيفة:

كتابة الطباعة خارج = كتابة طباعة جديدة (كتاب مخزن مؤقت جديد (جديد FileWriter ("Foo.OUT")))؛

ربما هو أن FileWriter يخلق التفاف الخاص به، ولكن هذه الفئة ستعرف الطريقة الأفضل.

في جافا تيارات والكتاب هم مغلفة حتى تتمكن من تجميعها لاحتياجاتك الخاصة (عن طريق تكديسهم مثلك). الفصول لا تنظر إلى نوع الدفق / الكاتب الذي تكدس عليه. في حالتك، فإن وجود العديد من المخازن المؤقتة تعني أن لديك بالفعل اثنين من المخازن المؤقتة، في فئتين مختلفتين. هذا يعني أنهم سيؤديون إلى بعض الذاكرة الإضافية وربما بعض فقدان الأداء، ولكن على الأرجح لن تلاحظ هذا أبدا (لأنه فقط في النفقات العامة قليلا مقارنة بعوامل الأداء الأخرى).

نصائح أخرى

هذا مثال على ديكور نمط. وبعد هذه الفكرة هي إضافة وظيفة إلى فئة دون تعديل الفصل. في مثال لديك لديك FileWriter. تريد كل ما تكتبه أن تكون مخزنة (فكرة جيدة إذا كانت عبر الشبكة) أولا قبل الكتابة. لذلك أنت طبقة مؤلمة على رأس ملفات FileWeriter. قد لا تريد التطبيقات الأخرى أن تكون البيانات مخزنة بحيث لا يحتاج المطورون إلى إضافة كتاب مخزن مؤقت.

لا يمكننا أن نتوقع ما سيحتاجه جميع المطورين. قل أنك بحاجة إلى rot13. بياناتك، الآن بدلا من تعديل FileWriter، تقوم بإنشاء Rot13Writer STALL 3WRITITER التي تنفذ الكاتب. سيتخذ Wrot13Writer مثالا على الكاتب وسيقوم بإجراء ROT13 قبل اجتيازه إلى الكاتب التالي.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top