Java PipedWriter クラス

Java PipedWriter クラス

JavaのPipedWriterクラス パイプを介してデータを渡すことにより、2 つのスレッドが相互に通信できるようになります。このクラスは、プログラムのある部分がデータをメモリに保存せずに別の部分に送信する場合に便利です。

PipedWriter クラスの機能:

  • これにより、パイプにデータを書き込むことができます。
  • PipedReader にデータを送信する前に、バッファを使用してデータを一時的に保存します。
  • PipedReader と連携して、スレッド間の安全なデータ転送を保証します。
  • パイプが壊れるとエラーがスローされます。

Java での PipedWriter の宣言

PipedWriter クラスの宣言は次のとおりです。

パブリッククラス PipedWriter は Writer を拡張します

実装されているすべてのインターフェイス:

  • 開閉可能: このインターフェイスは、リソースを処理するクラスによって使用されます。
  • 流せる: このインターフェイスは、データを宛先にフラッシュするために使用されます。
  • 追加可能: このインターフェイスは、既存のストリームにデータを追加するために使用されます。
  • 自動クローズ可能: このインターフェイスにより、リソースを自動的に閉じることができます。

PipedWriter クラスのコンストラクター

このクラスは 2 つのコンストラクターで構成されており、これらを使用すると、さまざまな方法でこのクラスのオブジェクトを作成できます。このクラスで使用できるコンストラクターは次のとおりです。

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 クラスのメソッドを示しています。

Javaのio.PipedWriterクラス


ここでは、各方法について 1 つずつ詳しく説明します。

1.書き込み(int char): このメソッドは、単一の文字をパイプに書き込むために使用されます。

構文:

public void write(int char)

  • パラメータ: このメソッドは、書き込まれる文字を表す 1 つのパラメータを取ります。
  • 例外: I/O 操作に問題がある場合、このメソッドは IOException を返します。


2. write(char[] carray int offset int maxlen): このメソッドは、配列からパイプに文字を書き込むために使用されます。

構文:

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

  • パラメータ: このメソッドには、以下に示す 3 つのパラメーターが含まれています。
    • キャリー: データを含む文字配列です
    • オフセット: フォームの書き込みを開始する配列内の位置です。
    • マックスレン: 書き込める最大文字数です。
  • 例外: I/O 操作に問題がある場合、このメソッドは IOException を返します。


3. 接続 (PipedReader の宛先): このメソッドは、PipedWriter を PipedReader に接続するために使用されます。

構文:

public void connect(PipedReader 宛先)

  • パラメータ: このメソッドは、PipedWriter がデータ転送のために接続する PipedReader である宛先パラメーターを 1 つ受け取ります。
  • 例外: 接続中にエラーが発生した場合、このメソッドは IOException をスローします。


4.flush(): このメソッドは、パイプ内のデータをフラッシュするために使用されます。

構文:

パブリックボイドフラッシュ()

  • パラメータ: このメソッドはパラメータを取りません。
  • 例外: データのフラッシュ中にエラーが発生した場合、このメソッドは IOException をスローします。


5.close(): このメソッドは、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 



PipedWriter クラスのメソッドの動作を示す Java プログラム

次に、いくつかの文字を書いて出力をフラッシュし、ライターを閉じます。

例:

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  
クイズの作成