Java PushbackReader クラス
の PushbackReader クラス Java では、 java.io.パッケージ ストリームから文字を読み取るために使用されます。このクラスを使用すると、文字をストリームにプッシュできます。
PushbackReader クラスの機能:
- このクラスは、文字をストリームにプッシュバックできるバッファを使用します。
- このクラスは、すぐには使用せずにテキストを読んだり、文字を確認したりするのに最適です。キャラクターが不要な場合は、押し戻すことができます。
例:
Java // Demonstrating the working // of PushbackReader import java.io.* ; public class Geeks { public static void main ( String [] args ) { String s = 'Hello World!' ; StringReader sr = new StringReader ( s ); // Create a PushbackReader with the StringReader PushbackReader pr = new PushbackReader ( sr ); try { // Read the first character int char1 = pr . read (); System . out . println ( 'Read character: ' + ( char ) char1 ); // Push this character back into the stream pr . unread ( char1 ); // Read the same character again (since we pushed it back) int char2 = pr . read (); System . out . println ( 'Read character again: ' + ( char ) char2 ); // Continue reading the next character int char3 = pr . read (); System . out . println ( 'Next character: ' + ( char ) char3 ); // Close the reader pr . close (); } catch ( IOException e ) { e . printStackTrace (); } } }
出力
Read character: H Read character again: H Next character: e
PushbackReaderクラスの宣言
PushbackReader クラスの宣言を以下に示します。
パブリック クラス PushbackReader は FilterReader を拡張します
実装されているすべてのインターフェイス:
- 開閉可能: このインターフェースはリソースを解放するために使用されます
- 自動クローズ可能: このインターフェイスにより、try-with-resources ステートメントで自動的に閉じることができます。
- 読み取り可能: このインターフェイスは、オブジェクトからデータを読み取るために使用されます。
PushbackReader のコンストラクター
このクラスは 2 つのコンストラクターで構成されており、これらを使用すると、さまざまな方法でこのクラスのオブジェクトを作成できます。このクラスで使用できるコンストラクターは次のとおりです。
1. PushbackReader(リーダープッシュ): このコンストラクターは、デフォルトのプッシュバック バッファーを使用して新しい PushbackReader を作成するために使用されます。
構文:
public PushbackReader(リーダープッシュ)
例:
Java // Demonstrating the working // of PushbackReader(Reader push) import java.io.* ; public class Geeks { public static void main ( String [] args ) { // String to be read String s = 'Hello World!' ; // Create a StringReader to read from the string StringReader sr = new StringReader ( s ); // Create a PushbackReader with the StringReader PushbackReader pr = new PushbackReader ( sr ); try { // Read and print characters int charRead ; while (( charRead = pr . read ()) != - 1 ) { System . out . print (( char ) charRead ); } // Close the PushbackReader pr . close (); } catch ( IOException e ) { e . printStackTrace (); } } }
出力
Hello World!
2. PushbackReader(リーダープッシュ整数サイズ): このコンストラクターを使用すると、プッシュバック バッファーのサイズを指定できます。
構文:
public PushbackReader(リーダープッシュ整数サイズ)
例:
Java // Demonstrating the working // of PushbackReader(Reader push int size) import java.io.* ; public class Geeks { public static void main ( String [] args ) { // String to be read String s = 'Hello World!' ; // Create a StringReader to read from the string StringReader sr = new StringReader ( s ); // Create a PushbackReader with the StringReader // and a specified buffer size of 20 PushbackReader pr = new PushbackReader ( sr 20 ); try { // Read and print characters int charRead ; while (( charRead = pr . read ()) != - 1 ) { System . out . print (( char ) charRead ); } // Close the PushbackReader pr . close (); } catch ( IOException e ) { e . printStackTrace (); } } }
出力
Hello World!
Java PushbackReader メソッド
以下の図は、CharArrayWriter クラスのメソッドを示しています。
ここでは、各方法について 1 つずつ詳しく説明します。
1.読み取り(): このメソッドは、ストリームから一度に 1 文字を読み取るために使用されます。
構文:
パブリック int read()
- パラメータ: このメソッドはパラメータを取りません。
- 戻り値の型: このメソッドは、整数として読み取られた文字を返すか、ストリームの終わりに達すると -1 を返します。
2. read(char[] carray int offset int maxlen): このメソッドは、文字の塊を読み取るために使用されます。
構文:
public int read(char[] carray int offset int maxlen)
- パラメータ: このメソッドには、以下に示す 3 つのパラメータが含まれます。
- char[] キャリー: 読み取られた文字が格納される文字配列です。 保管されています。
- 整数オフセット: 配列内の開始位置です
- int maxlen: 読み取れる最大文字数です。
- 戻り値の型: このメソッドは読み取られた文字数を返します。
3.close(): このメソッドはリーダーを閉じるために使用されます
構文:
public void close()
- パラメータ: このメソッドはパラメータを取りません
- 戻り値の型: このメソッドは何も返しません。
4. マーク(int readAheadLimit): このメソッドは、ストリーム内の現在位置をマークするために使用されます。
構文:
public void mark(int readAheadLimit)
- パラメータ: このメソッドには、マーク位置が無効になる前に読み取ることができる最大文字数を指定する 1 つのパラメーター readAheadLimit が含まれています。
- 戻り値の型: このメソッドは何も返しません
5.スキップ(長いn): このメソッドは、特定の数の文字をスキップするために使用されます。
構文:
パブリックロングスキップ(long n)
- パラメータ: このメソッドには、ストリーム内でスキップする文字数である long n というパラメーターが 1 つ含まれています。
- 戻り値の型: このメソッドはスキップされた文字数を返します。
6.リセット(): このメソッドは、mark() が呼び出された位置に戻るために使用されます。
構文:
パブリックボイドリセット()
- パラメータ: このメソッドはパラメータを取りません
- 戻り値の型: このメソッドは何も返しません
7.markSupported(): このメソッドは、ストリームがマーキングをサポートしているかどうかを示します。
構文:
public boolean markSupported()
- パラメータ: このメソッドはパラメータを取りません
- 戻り値の型: マーキングがサポートされていないため、このメソッドは false を返します。
8.ready(): このメソッドは、ストリームを読み取る準備ができているかどうかを確認します。
構文:
- パラメータ: このメソッドはパラメータを取りません
- 戻り値の型: ストリームの準備ができている場合、このメソッドは true を返します。
9. 未読(int c): このメソッドは、文字をストリームにプッシュバックするために使用されます。
構文:
public void unread(int c)
- パラメータ: このメソッドは、ストリームにプッシュバックされる文字である c という単一のパラメータを受け取ります。
- 戻り値の型: このメソッドは何も返しません。
10. unread(char[] carray): このメソッドは、文字の配列をストリームにプッシュするために使用されます。
構文:
public void unread(char[] carray)
- パラメータ: このメソッドは、ストリームにプッシュバックされる文字の配列を受け取ります。
- 戻り値の型: このメソッドは何も返しません。
PushbackReader メソッドをデモする Java プログラム
例:
Java // Demonstrating the working // of methods of PushbackReader class import java.io.* ; public class Geeks { public static void main ( String [] args ) throws IOException { String s = 'GeeksForGeeks' ; StringReader sr = new StringReader ( s ); PushbackReader pr = new PushbackReader ( sr ); // Check if the stream is ready System . out . println ( 'Is the stream ready? ' + pr . ready ()); // Use read() and skip() System . out . print ( 'Using read() and skip(): ' ); for ( int i = 0 ; i < 3 ; i ++ ) { char c = ( char ) pr . read (); // Read 1 char System . out . print ( c ); pr . skip ( 1 ); // Skip next char } char c = ( char ) pr . read (); // read next char after 3 skip cycles System . out . print ( c ); // Now read() with array – only 1 char expected char [] arr = new char [ 1 ] ; pr . read ( arr ); System . out . println ( 'nUsing read() with an array: ' + new String ( arr )); // Unread and read back pr . unread ( 'F' ); char nextChar = ( char ) pr . read (); System . out . println ( 'After unread() the next character: ' + nextChar ); // Close the reader pr . close (); } }
出力
Is the stream ready? true Using read() and skip(): Geso Using read() with an array: r After unread() the next character: Fクイズの作成