Java PipedWriter Sınıfı

Java PipedWriter Sınıfı

Java'da PipedWriter sınıfı iki iş parçacığının verileri bir borudan geçirerek birbirleriyle iletişim kurmasını sağlar. Bu sınıf, programın bir bölümünün hafızada saklanmadan başka bir bölüme veri göndermesini istediğimizde kullanışlıdır.

PipedWriter Sınıfının Özellikleri:

  • Bir boruya veri yazmayı sağlar.
  • Verileri PipedReader'a göndermeden önce geçici olarak depolamak için bir arabellek kullanır.
  • İş parçacıkları arasında güvenli veri aktarımını sağlamak için PipedReader ile birlikte çalışır.
  • Boru kırılırsa hata verir.

Java'da PipedWriter Bildirgesi

PipedWriter sınıfının bildirimi şöyledir:

genel sınıf PipedWriter, Writer'ı genişletiyor

Uygulanan Tüm Arayüzler:

  • Kapatılabilir: Bu arayüz kaynakları işleyen sınıflar tarafından kullanılır.
  • Yıkanabilir: Bu arayüz, verileri hedefine ulaştırmak için kullanılır.
  • Eklenebilir: Bu arayüz mevcut bir akışa veri eklemek için kullanılır.
  • Otomatik Kapatılabilir: Bu arayüz kaynakların otomatik olarak kapatılmasına olanak sağlar.

PipedWriter Sınıfındaki Yapıcılar

Bu sınıf, yardımıyla bu sınıfın nesnelerini farklı şekillerde oluşturabileceğimiz iki kurucudan oluşur. Bu sınıfta mevcut olan yapıcılar şunlardır:

1. PipedWriter(): Bu yapıcı henüz hiçbir şeye bağlı olmayan bir PipedWriter oluşturmak için kullanılır.

Sözdizimi:

PipedWriter()

Örnek:

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  ();      }      }   }   

Çıkış
Hello from PipedWriter! 


2. PipedWriter(PipedReader inStream): Bu yapıcı, bir PipedWriter oluşturmak ve onu bir PipedReader'a bağlamak için kullandık.

Sözdizimi:

PipedWriter(PipedReader snk)

Örnek:

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  ();      }      }   }   

Çıkış
Hello PipedWriter 


Java PipedWriter Yöntemleri

Aşağıdaki resimde PipedWriter sınıfının yöntemleri gösterilmektedir.

Java


Şimdi her yöntemi tek tek ayrıntılı olarak tartışacağız:

1. yaz(int karakter): Bu yöntem bir boruya tek bir karakter yazmak için kullanılır.

Sözdizimi:

genel geçersiz yazma (int char)

  • Parametre: Bu yöntem yazılacak karakteri temsil eden ischar parametresini alır.
  • İstisna: Bu yöntem, G/Ç işleminde bir sorun varsa IOException değerini döndürür.


2. write(char[] carray int offset int maxlen): Bu yöntem bir diziden boruya karakter yazmak için kullanılır.

Sözdizimi:

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

  • Parametre: Bu yöntem aşağıda listelenen üç parametreyi içerir:
    • : Verileri içeren karakter dizisidir
    • telafi etmek: Dizide form yazmaya başlayacağınız konumdur
    • maksimum: Yazılacak maksimum karakter sayısıdır.
  • İstisna: Bu yöntem, G/Ç işleminde bir sorun varsa IOException değerini döndürür.


3. bağlanın (PipedReader hedefi): Bu yöntem, PipedWriter'ı bir PipedReader'a bağlamak için kullanılır.

Sözdizimi:

genel geçersiz bağlantı (PipedReader hedefi)

  • Parametre: Bu yöntem bir parametre hedefini alır; bu, PipedWriter'ın veri aktarımı için bağlanacağı PipedReader'dır.
  • İstisna: Bu yöntem, bağlanırken bir hata oluşursa IOException oluşturur.


4. yıkama(): Bu yöntem, kanaldaki verileri temizlemek için kullanılır.

Sözdizimi:

genel geçersiz yıkama ()

  • Parametre: Bu yöntem herhangi bir parametre almaz.
  • İstisna: Bu yöntem, veriler temizlenirken bir hata oluşursa IOException oluşturur.


5. kapat(): Bu yöntem PipedWriter'ı kapatmak için kullanılır.

Sözdizimi:

genel geçersiz kapatma ()

  • Parametre: Bu yöntem herhangi bir parametre almaz.
  • İstisna: Yazıcının kapatılmasıyla ilgili bir sorun varsa bu yöntem IOException'ı oluşturur.


Şimdi veri yazmak için PipedWriter sınıfını nasıl kullanabileceğimizi ve verileri bağlı bir PipedReader aracılığıyla okuyacağımızı tartışacağız.

Örnek:

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  ();         }      }   

Çıkış
Output from the pipe: J A V A 



PipedWriter Sınıfı Yöntemlerinin Çalışmasını Gösteren Java Programı

Şimdi çıktıyı temizleyen bazı karakterler yazacağız ve yazıcıyı kapatacağız.

Örnek:

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  ();      }      }   }   

Çıkış
Output after flush(): G E E K S Closing the Writer stream  
Test Oluştur