ال فئة PipedWriter في جافا يسمح لخيطين بالتواصل مع بعضهما البعض عن طريق تمرير البيانات عبر الأنبوب. تكون هذه الفئة مفيدة عندما نريد أن يقوم جزء من البرنامج بإرسال البيانات إلى جزء آخر دون تخزينها في الذاكرة.
مميزات فئة PipedWriter:
- يستخدم مخزنًا مؤقتًا لتخزين البيانات مؤقتًا قبل إرسالها إلى PipedReader.
- يعمل مع PipedReader لضمان النقل الآمن للبيانات بين المواضيع.
- إذا انكسر الأنبوب فإنه يلقي خطأ.
إعلان PipedWriter في جافا
إعلان فئة PipedWriter هو:
الطبقة العامة PipedWriter تمتد الكاتب
جميع الواجهات المنفذة:
- قابل للإغلاق: يتم استخدام هذه الواجهة بواسطة الفئات التي تتعامل مع الموارد.
- قابل للانفجار: يتم استخدام هذه الواجهة لتدفق البيانات إلى وجهتها.
- قابل للإلحاق: يتم استخدام هذه الواجهة لإلحاق البيانات بدفق موجود.
- قابل للإغلاق التلقائي: تتيح هذه الواجهة الإغلاق التلقائي للموارد.
البنائين في فئة PipedWriter
تتكون هذه الفئة من مُنشئين يمكننا من خلالهما إنشاء كائنات من هذه الفئة بطرق مختلفة. فيما يلي المنشئات المتوفرة في هذه الفئة:
1. كاتب الأنابيب (): يتم استخدام هذا المنشئ لإنشاء PipedWriter الذي لم يتم توصيله بأي شيء حتى الآن.
قائمة مرتبطة بشكل مضاعف
بناء الجملة:
كاتب الأنابيب ()
3D في أوتوكاد
مثال:
Java// Demonstrating the working // of PipedWriter() import java.io.*; class Geeks { public static void main(String[] args) { // Create PipedWriter and PipedReader PipedWriter w = new PipedWriter(); PipedReader r = new PipedReader(); try { // Connect the PipedWriter to the PipedReader w.connect(r); // Create a thread to write data into the pipe Thread writerThread = new Thread(new Runnable() { public void run() { try { w.write('Hello from PipedWriter!'); w.close(); } catch (IOException e) { e.printStackTrace(); } } }); // Create a thread to read data from the pipe Thread readerThread = new Thread(new Runnable() { public void run() { try { int data; while ((data = r.read()) != -1) { System.out.print((char) data); } r.close(); } catch (IOException e) { e.printStackTrace(); } } }); // Start both threads writerThread.start(); readerThread.start(); // Wait for both threads to finish writerThread.join(); readerThread.join(); } catch (IOException | InterruptedException e) { e.printStackTrace(); } } }
الإخراج
Hello from PipedWriter!
2. PipedWriter (PipedReader inStream): استخدمنا هذا المنشئ لإنشاء PipedWriter وتوصيله بـ PipedReader.
بناء الجملة:
كاتب الأنابيب (PipedReader snk)
مثال:
Java// Demonstrating the working // PipedWriter(PipedReader snk) import java.io.*; public class Geeks { public static void main(String[] args) { try { // Create a PipedReader and a PipedWriter PipedReader r = new PipedReader(); PipedWriter w = new PipedWriter(r); // Create a thread to write data to the PipedWriter Thread writerThread = new Thread(() -> { try { w.write('Hello PipedWriter'); w.close(); } catch (IOException e) { e.printStackTrace(); } }); // Create a thread to read data from the PipedReader Thread readerThread = new Thread(() -> { try { int data; while ((data = r.read()) != -1) { System.out.print((char) data); } } catch (IOException e) { e.printStackTrace(); } }); // Start both threads writerThread.start(); readerThread.start(); // Wait for both threads to finish writerThread.join(); readerThread.join(); } catch (IOException | InterruptedException e) { e.printStackTrace(); } } }
الإخراج
Hello PipedWriter
طرق جافا PipedWriter
توضح الصورة أدناه أساليب فئة PipedWriter.

وسنتحدث الآن عن كل طريقة على حدة بالتفصيل:
دمج الفرز جافا
1. اكتب (int char): يتم استخدام هذه الطريقة لكتابة حرف واحد إلى توجيه الإخراج.
بناء الجملة:
كتابة الفراغ العام (int char)
- المعلمة: تأخذ هذه الطريقة معلمة واحدة تمثل الحرف المراد كتابته.
- استثناء: تقوم هذه الطريقة بإرجاع IOException إذا كانت هناك مشكلة في عملية الإدخال/الإخراج.
2. اكتب (شار [] كاراي إنت إزاحة إنت ماكسلين): تُستخدم هذه الطريقة لكتابة أحرف من مصفوفة إلى الأنبوب.
بناء الجملة:
كتابة الفراغ العام (شار [] كاراي إنت إزاحة إنت ماكسلين)
- المعلمة: تتضمن هذه الطريقة ثلاث معلمات مدرجة أدناه:
- كاري: إنها مصفوفة الأحرف التي تحتوي على البيانات
- إزاحة: هذا هو الموضع في المصفوفة حيث تبدأ كتابة النموذج
- ماكسلين: هذا هو الحد الأقصى لعدد الأحرف للكتابة.
- استثناء: تقوم هذه الطريقة بإرجاع IOException إذا كانت هناك مشكلة في عملية الإدخال/الإخراج.
3. الاتصال (وجهة PipedReader): يتم استخدام هذه الطريقة لتوصيل PipedWriter بـ PipedReader.
بناء الجملة:
اتصال الفراغ العام (وجهة PipedReader)
- المعلمة: تأخذ هذه الطريقة وجهة معلمة واحدة وهي PipedReader الذي سيتصل به PipedWriter لنقل البيانات.
- استثناء: تقوم هذه الطريقة بطرح IOException في حالة حدوث خطأ أثناء الاتصال.
4. فلوش (): يتم استخدام هذه الطريقة لتدفق البيانات في الأنبوب.
بناء الجملة:
هم مغنون
تدفق الفراغ العام ()
- المعلمة: هذه الطريقة لا تأخذ أي معلمة.
- استثناء: تقوم هذه الطريقة بطرح IOException في حالة حدوث خطأ أثناء مسح البيانات.
5. إغلاق (): يتم استخدام هذه الطريقة لإغلاق PipedWriter.
تركيب:
إغلاق الفراغ العام ()
- المعلمة: هذه الطريقة لا تأخذ أي معلمة.
- استثناء: تقوم هذه الطريقة بطرح IOException إذا كانت هناك مشكلة في إغلاق الكاتب.
أنواع الأشجار الثنائية
سنناقش الآن كيف يمكننا استخدام فئة PipedWriter لكتابة البيانات والانتقال إلى قراءتها من خلال PipedReader المتصل
مثال:
Java// Demonstrating how to use PipedReader // and PipedWriter to transferr an array // of characters between two threads import java.io.*; public class Geeks { public static void main(String[] args) throws IOException { PipedReader r = new PipedReader(); PipedWriter w = new PipedWriter(); r.connect(w); // Must connect before use // Writing a char array char[] c = {'J' 'A' 'V' 'A'}; w.write(c 0 4); // Reading blocks if no data is written yet System.out.print('Output from the pipe:'); for (int i = 0; i < 4; i++) { System.out.print(' ' + (char) r.read()); } w.close(); r.close(); } }
الإخراج
Output from the pipe: J A V A
برنامج جافا يوضح عمل أساليب فئة PipedWriter
الآن سوف نكتب بعض الأحرف لإخراج الإخراج وإغلاق الكاتب.
مثال:
Java// Java program illustrating the working of PipedWriter // write() connect // close() flush() import java.io.*; public class Geeks { public static void main(String[] args) throws IOException { PipedReader r = new PipedReader(); PipedWriter w = new PipedWriter(); try { // Use of connect(): Connecting the writer to the reader r.connect(w); // Use of write(int byte): Writing characters to the pipe w.write(71); w.write(69); w.write(69); w.write(75); w.write(83); // Use of flush() method: Flushing the output to // make sure all data is written w.flush(); System.out.println('Output after flush():'); // Reading from the pipe for (int i = 0; i < 5; i++) { System.out.print(' ' + (char) r.read()); } // Use of close() method: Closing the writer System.out.println('nClosing the Writer stream'); w.close(); } catch (IOException e) { e.printStackTrace(); } } }
الإخراج
Output after flush(): G E E K S Closing the Writer streamإنشاء اختبار