Java PipedReader クラス
の JavaのPipedReaderクラス の一部です java.io パッケージであり、パイプから文字データを読み取るために使用されます。 This class allows inter-thread communication where one thread writes data using a PipedWriter and another reads it using パイプリーダー。
PipedReader クラスの機能:
- パイプを介してデータを読み取ることができます。
- バッファを使用して、PipedWriter から受信したデータを保存します。
- PipedWriter と連携して、スレッド間でデータが安全に転送されるようにします。
- パイプが壊れるとエラーがスローされます。
Javaのパイプとは何ですか?
Java では、2 つのスレッドをリンクするためにパイプが使用されます。 1 つのスレッドはパイプ経由でデータを送信するために使用され、もう 1 つのスレッドはデータを読み取ります。データを送信しているスレッドが停止またはクラッシュした場合、パイプは壊れていると見なされます。
PipedReader クラスの宣言
PipedReader クラスの宣言は次のとおりです。
パブリック クラス PipedReader extends Reader
実装されているすべてのインターフェイス:
- 開閉可能: このインターフェイスは、不要になったときにストリームを閉じてリソースを解放するために使用されます。
- 自動クローズ可能: このインターフェイスにより、try-with-resources ステートメントでの自動リソース管理が可能になります。
- 読み取り可能: このインターフェイスにより、ストリームからデータを読み取ることができます。
PipedReader のコンストラクター
このクラスは 4 つのコンストラクターで構成されており、これらのコンストラクターを使用すると、さまざまな方法でこのクラスのオブジェクトを作成できます。このクラスで使用できるコンストラクターは次のとおりです。
1.PipedReader(): このコンストラクターは、まだどのライターにも接続されていない PipedReader を作成します。
構文:
public PipedReader()
2. PipedReader(int PipeSize): このコンストラクターは、指定されたパイプ サイズで PipedREader を作成します。
構文:
public PipedReader(int pSize)
3. PipedReader(PipedWriter src): このコンストラクターは、PipedWriterStream src に接続される PipedReader を作成します。
public PipedReader(PipedWriter src)
4. PipedReader(PipedWriter src int PipeSize): このコンストラクターは、指定されたサイズで接続された PipedReader を作成し、指定された PipedWriter にリンクします。
構文:
public PipedReader(PipedWriter src int pSize)
Java PipedReaderメソッド
以下の図は、PipedReader クラスのメソッドを示しています。
ここでは、各方法について 1 つずつ詳しく説明します。
1.読み取り(): このメソッドは、PipedReader から次の文字を取得するために使用されます。読み取るデータが存在するまでブロックされ、エラーが発生します。
構文:
public int read() が IOException をスローする
- パラメータ: このメソッドはパラメータを取りません。
- 戻り値の型: このメソッドは次の文字を整数として返します。ストリームの終わりに達した場合は -1 を返します。
例:
Java // Demonstrating the working // of read() method import java.io.* ; public class GeeKs { public static void main ( String [] args ) throws IOException { PipedReader r = new PipedReader (); PipedWriter w = new PipedWriter (); // Connect the reader and writer r . connect ( w ); // Write data to the PipedWriter w . write ( 71 ); System . out . println ( 'Read: ' + ( char ) r . read ()); w . write ( 69 ); System . out . println ( 'Read: ' + ( char ) r . read ()); w . write ( 75 ); System . out . println ( 'Read: ' + ( char ) r . read ()); } }
出力
Read: G Read: E Read: K
2. read(char[] carray int offset int maxlen): このメソッドは、最大 maxlen 文字を PipedReader Stream から文字配列に読み取るために使用されます。ストリームの終わりに達するか、例外がスローされると、メソッドはブロックされます。
構文:
public int read(char[] carray int offset int maxlen) は IOException をスローします
- パラメータ: このメソッドには、以下に示す 3 つのパラメーターが含まれています。
- キャリー: データが読み込まれるバッファーです。
- オフセット: 配列内の開始位置です
- マックスレン: 配列に読み込まれる最大文字数。
- 戻り値の型: このメソッドは、データの maxlen バイトを整数値として返します。ストリームの終わりに達した場合は -1 を返します。
例:
Java // Demonstrating the working // of read(char[] carray int offset int maxlen) 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 ); // Write data to PipedWriter w . write ( 71 ); // G w . write ( 69 ); // E w . write ( 75 ); // K w . write ( 83 ); // S // Read data into an array char [] b = new char [ 5 ] ; r . read ( b 0 5 ); System . out . print ( 'Read characters: ' ); for ( char c : b ) { System . out . print ( c ); } } }
出力
Read characters: GEKS
3.close(): このメソッドは、PipedReader を閉じるために使用されます。
構文:
public void close() が IOException をスローする
- パラメータ: このメソッドはパラメータを取りません
- 戻り値の型: このメソッドは何も返しません
例:
Java // Demonstrating the working // of close() method 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 ); w . write ( 71 ); // Close the reader r . close (); System . out . println ( 'Stream closed.' ); } }
出力
Stream closed.
4.ready(): このメソッドは、ストリームを読み取る準備ができているかどうかを確認するために使用されます。
構文:
- パラメータ: このメソッドはパラメータを取りません
- 戻り値の型: このメソッドは、ストリームを読み取る準備ができている場合は true を返し、それ以外の場合は false を返します。
例:
Java // Demonstrating the working // of ready() method 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 ); w . write ( 71 ); // Check if the stream is ready to be read System . out . println ( 'Stream is ready to be read: ' + r . ready ()); } }
出力
Stream is ready to be read: true
5.close(): このメソッドは、PipedReader ストリームを閉じるために使用されます。
構文:
public void close()
- パラメータ: このメソッドはパラメータを取りません。
- 戻り値の型: このメソッドは何も返しません。
例:
Java // Demonstrating the working // of close() method import java.io.* ; public class Geeks { public static void main ( String [] args ) { try { // Create a PipedReader and PipedWriter PipedReader r = new PipedReader (); PipedWriter w = new PipedWriter (); // Connect the PipedReader to the PipedWriter r . connect ( w ); // Write a character to the PipedWriter w . write ( 'A' ); // Read and print the character from the PipedReader System . out . println ( 'Read: ' + ( char ) r . read ()); // Output: A // Close the PipedReader stream r . close (); System . out . println ( 'Stream closed.' ); } catch ( IOException e ) { e . printStackTrace (); } } }
出力
Read: A Stream closed.クイズの作成