StringReader
日本語 | 文字列読者 |
英語 | string reader |
ふりがな | すとりんぐりーだー |
フリガナ | ストリングリーダー |
J2SEに含まれるクラスのひとつ。パッケージも含めたクラス名はjava.io.StringReader。
ストリームクラス。Readerクラスのサブクラスであり、文字入力ストリームクラスである。
文字入力ストリームクラスの中では「入力元」に位置する。
対になる出力側のクラスはStringWriterクラスである。
Stringクラスを入力元とするクラス。
通常、文字入力ストリームはファイルやソケットを入力元とするが、StringReaderクラスはStringクラス、つまりメモリを入力元とする。
ファイルやソケットは対象が存在しないとアクセスできないため、その代わりとして使用する。また、文字列等のメモリ上のデータを対象とする場合にも使用する。
StringReaderクラスのコンストラクタに入力元のStringを渡すことで、その中に格納された文字列が入力元となる。「入力元」、つまり「データ側の末端」であるため、Readerクラスを引数に持つコンストラクタはない。
StringReaderクラスのread()メソッドを用いて入力元の文字列から各char型データを取得する。
引数を持たないread()メソッドはint型を返す。戻り値として返されるのはchar型、つまり0x00000000~0x0000FFFFの範囲の値か、もしくは-1、つまり0xFFFFFFFFが返される。通常はchar型の範囲のためchar型にキャストすることで該当する文字を取得することができる。文字入力ストリームの終端に達したときのみ-1を返すため、これを「最後まで読み込んだ印」とする。
処理終了後はclose()メソッドを呼び終了処理を行う。
ストリームクラス。Readerクラスのサブクラスであり、文字入力ストリームクラスである。
文字入力ストリームクラスの中では「入力元」に位置する。
対になる出力側のクラスはStringWriterクラスである。
Stringクラスを入力元とするクラス。
通常、文字入力ストリームはファイルやソケットを入力元とするが、StringReaderクラスはStringクラス、つまりメモリを入力元とする。
ファイルやソケットは対象が存在しないとアクセスできないため、その代わりとして使用する。また、文字列等のメモリ上のデータを対象とする場合にも使用する。
StringReaderクラスのコンストラクタに入力元のStringを渡すことで、その中に格納された文字列が入力元となる。「入力元」、つまり「データ側の末端」であるため、Readerクラスを引数に持つコンストラクタはない。
StringReaderクラスのread()メソッドを用いて入力元の文字列から各char型データを取得する。
引数を持たないread()メソッドはint型を返す。戻り値として返されるのはchar型、つまり0x00000000~0x0000FFFFの範囲の値か、もしくは-1、つまり0xFFFFFFFFが返される。通常はchar型の範囲のためchar型にキャストすることで該当する文字を取得することができる。文字入力ストリームの終端に達したときのみ-1を返すため、これを「最後まで読み込んだ印」とする。
処理終了後はclose()メソッドを呼び終了処理を行う。
参考サイト
// Sample.java
import java.io.StringReader;
import java.io.IOException;
public class Sample
{
public static void main( String[] args )
{
StringReader stringReader = null;
try
{
// 対象とする文字列。
String source = "あいうえお";
// StringReaderクラスを作ります。
stringReader = new StringReader( source );
while( true )
{
// 1バイト取得します。
int i = stringReader.read();
if( i == -1 )
{
// -1が返されてきたら終わりです。
break;
}
// 出力します。
System.out.println( (char)i );
}
// あ
// い
// う
// え
// お
// このように、一文字ずつ取得することができます。
// int型で返されるのは、-1が返される可能性があるためです。
// -1でない場合には、必ずchar型の範囲の値が返され、
// char型にキャストすることができます。
}
catch( IOException e )
{
// 読み込みに失敗した際に、write()メソッドが
// IOException例外を投げます。
e.printStackTrace();
}
finally
{
// 最後にclose()メソッドを呼んで後処理をします。
// また、これは必ず行うため、finally内で行います。
if( stringReader != null )
{
stringReader.close();
}
}
}
}
import java.io.StringReader;
import java.io.IOException;
public class Sample
{
public static void main( String[] args )
{
StringReader stringReader = null;
try
{
// 対象とする文字列。
String source = "あいうえお";
// StringReaderクラスを作ります。
stringReader = new StringReader( source );
while( true )
{
// 1バイト取得します。
int i = stringReader.read();
if( i == -1 )
{
// -1が返されてきたら終わりです。
break;
}
// 出力します。
System.out.println( (char)i );
}
// あ
// い
// う
// え
// お
// このように、一文字ずつ取得することができます。
// int型で返されるのは、-1が返される可能性があるためです。
// -1でない場合には、必ずchar型の範囲の値が返され、
// char型にキャストすることができます。
}
catch( IOException e )
{
// 読み込みに失敗した際に、write()メソッドが
// IOException例外を投げます。
e.printStackTrace();
}
finally
{
// 最後にclose()メソッドを呼んで後処理をします。
// また、これは必ず行うため、finally内で行います。
if( stringReader != null )
{
stringReader.close();
}
}
}
}
// Sample.java import java.io.StringReader; import java.io.IOException; public class Sample { public static void main( String[] args ) { StringReader stringReader = null; try { // 対象とする文字列。 String source = "あいうえお"; // StringReaderクラスを作ります。 stringReader = new StringReader( source ); while( true ) { // 1バイト取得します。 int i = stringReader.read(); if( i == -1 ) { // -1が返されてきたら終わりです。 break; } // 出力します。 System.out.println( (char)i ); } // あ // い // う // え // お // このように、一文字ずつ取得することができます。 // int型で返されるのは、-1が返される可能性があるためです。 // -1でない場合には、必ずchar型の範囲の値が返され、 // char型にキャストすることができます。 } catch( IOException e ) { // 読み込みに失敗した際に、write()メソッドが // IOException例外を投げます。 e.printStackTrace(); } finally { // 最後にclose()メソッドを呼んで後処理をします。 // また、これは必ず行うため、finally内で行います。 if( stringReader != null ) { stringReader.close(); } } } }