CharArrayReader
日本語 | 文字配列読者 |
英語 | char array reader |
ふりがな | きゃらあれいりーだー |
フリガナ | キャラアレイリーダー |
J2SEに含まれるクラスのひとつ。パッケージも含めたクラス名はjava.io.CharArrayReader。
ストリームクラス。Readerクラスのサブクラスであり、文字入力ストリームクラスである。
文字入力ストリームクラスの中では「入力元」に位置する。
対になる出力側のクラスはCharArrayWriterクラスである。
char型配列を入力元とするクラス。
通常、文字入力ストリームはファイルやソケットを入力元とするが、CharArrayReaderクラスはchar型配列、つまりメモリを入力元とする。
ファイルやソケットは対象が存在しないとアクセスできないため、その代わりとして使用する。また、文字列等のメモリ上のデータを対象とする場合にも使用する。
似た機能を持つクラスにStringReaderクラスがある。StringReaderクラスの方が使い勝手がいいため、単純に文字列を入力元とする場合にはStringReaderクラスを使用する方がいいだろう。
CharArrayReaderクラスのコンストラクタに入力元のchar型配列を渡すことで、その中に格納された文字列が入力元となる。「入力元」、つまり「データ側の末端」であるため、Readerクラスを引数に持つコンストラクタはない。
CharArrayReaderクラスのread()メソッドを用いて入力元の文字列から各char型データを取得する。
引数を持たないread()メソッドはint型を返す。戻り値として返されるのはchar型、つまり0x00000000~0x0000FFFFの範囲の値か、もしくは-1、つまり0xFFFFFFFFが返される。通常はchar型の範囲のためchar型にキャストすることで該当する文字を取得することができる。文字入力ストリームの終端に達したときのみ-1を返すため、これを「最後まで読み込んだ印」とする。
処理終了後はclose()メソッドを呼び終了処理を行う。
ストリームクラス。Readerクラスのサブクラスであり、文字入力ストリームクラスである。
文字入力ストリームクラスの中では「入力元」に位置する。
対になる出力側のクラスはCharArrayWriterクラスである。
char型配列を入力元とするクラス。
通常、文字入力ストリームはファイルやソケットを入力元とするが、CharArrayReaderクラスはchar型配列、つまりメモリを入力元とする。
ファイルやソケットは対象が存在しないとアクセスできないため、その代わりとして使用する。また、文字列等のメモリ上のデータを対象とする場合にも使用する。
似た機能を持つクラスにStringReaderクラスがある。StringReaderクラスの方が使い勝手がいいため、単純に文字列を入力元とする場合にはStringReaderクラスを使用する方がいいだろう。
CharArrayReaderクラスのコンストラクタに入力元のchar型配列を渡すことで、その中に格納された文字列が入力元となる。「入力元」、つまり「データ側の末端」であるため、Readerクラスを引数に持つコンストラクタはない。
CharArrayReaderクラスのread()メソッドを用いて入力元の文字列から各char型データを取得する。
引数を持たないread()メソッドはint型を返す。戻り値として返されるのはchar型、つまり0x00000000~0x0000FFFFの範囲の値か、もしくは-1、つまり0xFFFFFFFFが返される。通常はchar型の範囲のためchar型にキャストすることで該当する文字を取得することができる。文字入力ストリームの終端に達したときのみ-1を返すため、これを「最後まで読み込んだ印」とする。
処理終了後はclose()メソッドを呼び終了処理を行う。
参考サイト
// Sample.java
import java.io.CharArrayReader;
import java.io.IOException;
public class Sample
{
public static void main( String[] args )
{
CharArrayReader charArrayReader = null;
try
{
// 対象とする文字列。
char[] chars = new char[]{ 'あ', 'い', 'う', 'え', 'お' };
// CharArrayReaderクラスを作ります。
charArrayReader = new CharArrayReader( chars );
while( true )
{
// 1バイト取得します。
int i = charArrayReader.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( charArrayReader != null )
{
charArrayReader.close();
}
}
}
}
import java.io.CharArrayReader;
import java.io.IOException;
public class Sample
{
public static void main( String[] args )
{
CharArrayReader charArrayReader = null;
try
{
// 対象とする文字列。
char[] chars = new char[]{ 'あ', 'い', 'う', 'え', 'お' };
// CharArrayReaderクラスを作ります。
charArrayReader = new CharArrayReader( chars );
while( true )
{
// 1バイト取得します。
int i = charArrayReader.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( charArrayReader != null )
{
charArrayReader.close();
}
}
}
}
// Sample.java import java.io.CharArrayReader; import java.io.IOException; public class Sample { public static void main( String[] args ) { CharArrayReader charArrayReader = null; try { // 対象とする文字列。 char[] chars = new char[]{ 'あ', 'い', 'う', 'え', 'お' }; // CharArrayReaderクラスを作ります。 charArrayReader = new CharArrayReader( chars ); while( true ) { // 1バイト取得します。 int i = charArrayReader.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( charArrayReader != null ) { charArrayReader.close(); } } } }