فئة جافا PipedWriter

فئة جافا PipedWriter

ال فئة PipedWriter في جافا يسمح لخيطين بالتواصل مع بعضهما البعض عن طريق تمرير البيانات عبر الأنبوب. تكون هذه الفئة مفيدة عندما نريد أن يقوم جزء من البرنامج بإرسال البيانات إلى جزء آخر دون تخزينها في الذاكرة.

مميزات فئة PipedWriter:

  • يستخدم مخزنًا مؤقتًا لتخزين البيانات مؤقتًا قبل إرسالها إلى PipedReader.
  • يعمل مع PipedReader لضمان النقل الآمن للبيانات بين المواضيع.
  • إذا انكسر الأنبوب فإنه يلقي خطأ.

إعلان PipedWriter في جافا

إعلان فئة PipedWriter هو:

الطبقة العامة PipedWriter تمتد الكاتب

جميع الواجهات المنفذة:

  • قابل للإغلاق: يتم استخدام هذه الواجهة بواسطة الفئات التي تتعامل مع الموارد.
  • قابل للانفجار: يتم استخدام هذه الواجهة لتدفق البيانات إلى وجهتها.
  • قابل للإلحاق: يتم استخدام هذه الواجهة لإلحاق البيانات بدفق موجود.
  • قابل للإغلاق التلقائي: تتيح هذه الواجهة الإغلاق التلقائي للموارد.

البنائين في فئة PipedWriter

تتكون هذه الفئة من مُنشئين يمكننا من خلالهما إنشاء كائنات من هذه الفئة بطرق مختلفة. فيما يلي المنشئات المتوفرة في هذه الفئة:

1. كاتب الأنابيب (): يتم استخدام هذا المنشئ لإنشاء PipedWriter الذي لم يتم توصيله بأي شيء حتى الآن.

بناء الجملة:

كاتب الأنابيب ()

مثال:

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.

فئة io.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  
إنشاء اختبار