כיתת Java PipedWriter

כיתת Java PipedWriter

ה כיתת PipedWriter ב-Java מאפשר לשני חוטים לתקשר זה עם זה על ידי העברת נתונים דרך צינור. מחלקה זו שימושית כאשר אנו רוצים שחלק אחד של התוכנית ישלח נתונים לחלק אחר מבלי לאחסן אותם בזיכרון.

תכונות של כיתת PipedWriter:

  • זה מאפשר כתיבת נתונים לתוך צינור.
  • הוא משתמש במאגר כדי לאחסן נתונים באופן זמני לפני שליחתם ל- PipedReader.
  • זה עובד עם PipedReader כדי להבטיח העברת נתונים בטוחה בין שרשורים.
  • אם הצינור נשבר הוא זורק שגיאה.

הצהרת PipedWriter ב-Java

ההצהרה של כיתת PipedWriter היא:

כיתה ציבורית PipedWriter מרחיבה את Writer

  • ניתן לסגירה: ממשק זה משמש מחלקות המטפלות במשאבים.
  • ניתן לשטיפה: ממשק זה משמש כדי לשטוף נתונים ליעדם.
  • ניתן להוספה: ממשק זה משמש להוספת נתונים לזרם קיים.
  • ניתן לסגירה אוטומטית: ממשק זה מאפשר סגירה אוטומטית של משאבים.

בונים בכיתה PipedWriter

מחלקה זו מורכבת משני בנאים שבעזרתם נוכל ליצור אובייקטים של מחלקה זו בדרכים שונות. להלן הבנאים הזמינים במחלקה זו:

1. PipedWriter(): הבנאי הזה משמש ליצירת PipedWriter שעדיין לא מחובר לשום דבר.

תַחבִּיר:

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.

תַחבִּיר:

PipedWriter (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 


שיטות Java PipedWriter

התמונה למטה מדגימה את השיטות של מחלקה PipedWriter.

כיתת io.PipedWriter ב-Java


כעת נדון בפירוט על כל שיטה בזה אחר זה:

1. כתוב (int char): שיטה זו משמשת לכתיבת תו בודד לצינור.

תַחבִּיר:

public void write(int char)

  • פָּרָמֶטֶר: שיטה זו לוקחת פרמטר אחד שמייצג את התו שייכתב.
  • חֲרִיגָה: שיטה זו מחזירה את IOException אם יש בעיה בפעולת ה-I/O.


2. write(char[] carray int offset int maxlen): שיטה זו משמשת לכתיבת תווים ממערך לצינור.

תַחבִּיר:

public void write(char[] carray int offset int maxlen)

  • פָּרָמֶטֶר: שיטה זו כוללת שלושה פרמטרים המפורטים להלן:
    • carray: מערך התווים הוא שמכיל נתונים
    • לְקַזֵז: זה המיקום במערך שבו להתחיל לכתוב טופס
    • מקסלן: זהו המספר המרבי של תווים לכתיבה.
  • חֲרִיגָה: שיטה זו מחזירה את IOException אם יש בעיה בפעולת ה-I/O.


3. התחבר (יעד PipedReader): שיטה זו משמשת לחיבור PipedWriter ל-PipedReader.

תַחבִּיר:

חיבור ריק ציבורי (יעד PipedReader)

  • פָּרָמֶטֶר: שיטה זו לוקחת יעד אחד של פרמטר זה הוא PipedReader שאליו יתחבר PipedWriter להעברת נתונים.
  • חֲרִיגָה: שיטה זו זורקת את IOException אם מתרחשת שגיאה במהלך החיבור.


4. flush(): שיטה זו משמשת לשטוף נתונים בצינור.

תַחבִּיר:

public void flush()

  • פָּרָמֶטֶר: שיטה זו אינה לוקחת שום פרמטר.
  • חֲרִיגָה: שיטה זו זורקת את IOException אם מתרחשת שגיאה בזמן שטיפת הנתונים.


5. סגור(): שיטה זו משמשת לסגירת PipedWriter.

סינטקס:

public void close()

  • פָּרָמֶטֶר: שיטה זו אינה לוקחת שום פרמטר.
  • חֲרִיגָה: שיטה זו זורקת את 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 



תוכנית Java הממחישה את פעולתן של שיטות מחלקות 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  
צור חידון