logo

Java PipedWriter クラス

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

PipedWriter クラスの機能:

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

Java での PipedWriter の宣言

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



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

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

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

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

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

1.PipedWriter(): このコンストラクターは、まだ何にも接続されていない PipedWriter を作成するために使用されます。

構文:

PipedWriter()

bashは区切り文字で文字列を分割します

例:

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

Linuxでディレクトリ名を変更する
Javaのio.PipedWriterクラス' title=


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

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

構文:

public void write(int char)

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


android.process.acore が停止し続ける

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 をスローします。


np.concatenate

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