FileReader
日本語 | 書類読者 |
英語 | file reader |
ふりがな | ふぁいるりーだー |
フリガナ | ファイルリーダー |
J2SEに含まれるクラスのひとつ。パッケージも含めたクラス名はjava.io.FileReader。
ストリームクラス。InputStreamReaderクラスのサブクラスであり、文字入力ストリームクラスである。
InputStreamReaderクラスのサブクラスであり、文字入力ストリームクラスの中では「入力元」に位置する。
対になる出力側のクラスはFileWriterクラスである。
ファイルを入力元とするクラス。
ファイルから1文字ずつ取得するためのクラス。テキストファイルを開き、OS標準の文字コードからJava標準の文字コードであるUnicodeへと変換して読み込む。
ただし、改行文字の変換は行われない。改行文字の変換を行う場合には、BufferedReaderクラスを「中継ぎ」として使用し、readLine()メソッドで取得するのがいいだろう。バッファリングを行うことで、ファイルの読み込みが早くなるというメリットもある。
ファイルをバイナリーファイルとして開く場合には、バイト入力ストリームであるFileInputStreamクラスの使用を勧める。
FileReaderクラスのコンストラクタに「本当の入力元」となるファイルを指定することで、そのファイルを開く。
FileReaderクラスのread()メソッドを用いて入力元のファイルから各文字を取得する。この時、取得した文字データはchar型ではなくint型として返される。だが実際にはchar型の範囲内の値が返されている。
ファイルの終端に達した時、read()メソッドは「-1」を返す。この-1を返す意味もあり、read()メソッドはint型を返す。
処理終了後は、FileReaderクラスのclose()メソッドを呼び出す。このclose()メソッドは「ファイルを閉じる」という重要な処理を行うため、必ず呼ばれるようにfinally内で行う。
ストリームクラス。InputStreamReaderクラスのサブクラスであり、文字入力ストリームクラスである。
InputStreamReaderクラスのサブクラスであり、文字入力ストリームクラスの中では「入力元」に位置する。
対になる出力側のクラスはFileWriterクラスである。
ファイルを入力元とするクラス。
ファイルから1文字ずつ取得するためのクラス。テキストファイルを開き、OS標準の文字コードからJava標準の文字コードであるUnicodeへと変換して読み込む。
ただし、改行文字の変換は行われない。改行文字の変換を行う場合には、BufferedReaderクラスを「中継ぎ」として使用し、readLine()メソッドで取得するのがいいだろう。バッファリングを行うことで、ファイルの読み込みが早くなるというメリットもある。
ファイルをバイナリーファイルとして開く場合には、バイト入力ストリームであるFileInputStreamクラスの使用を勧める。
FileReaderクラスのコンストラクタに「本当の入力元」となるファイルを指定することで、そのファイルを開く。
FileReaderクラスのread()メソッドを用いて入力元のファイルから各文字を取得する。この時、取得した文字データはchar型ではなくint型として返される。だが実際にはchar型の範囲内の値が返されている。
ファイルの終端に達した時、read()メソッドは「-1」を返す。この-1を返す意味もあり、read()メソッドはint型を返す。
処理終了後は、FileReaderクラスのclose()メソッドを呼び出す。このclose()メソッドは「ファイルを閉じる」という重要な処理を行うため、必ず呼ばれるようにfinally内で行う。
// Sample.java
import java.io.FileReader;
import java.io.BufferedReader;
import java.io.IOException;
public class Sample
{
public static void main( String[] args )
{
// 入力ファイルの絶対パス。
String inputFilePath = "D:/from.txt";
// このファイルには以下のように記述してください。
/*
あいう
えお
*/
// FileReaderクラスの参照型変数。
// ここで作っておくのはfinallyでclose()メソッドを呼ぶためです。
FileReader fileReader = null;
try
{
// まずFileReaderクラスを作ります。
// このクラス経由でファイルから文字列を取得します。
fileReader = new FileReader( inputFilePath );
while( true )
{
// 1バイト取得します。
int i = fileReader.read();
if( i == -1 )
{
// -1が返されてきたら終わりです。
break;
}
// 出力します。
System.out.println( (char)i + " ( 0x" + Integer.toHexString( 0x0000FFFF & i ) + " )" );
}
// あ ( 0x3042 )
// い ( 0x3044 )
// う ( 0x3046 )
//
// ( 0xd )
//
// ( 0xa )
// え ( 0x3048 )
// お ( 0x304a )
// 注:この例はWindowsの場合の例です。
// このように、ファイルから一文字ずつ読み込むことができます。
// ただし、改行文字の変換は行われません。
}
catch( IOException e )
{
// ファイルが無かった場合等に、この
// IOException例外が投げられます。
e.printStackTrace();
}
finally
{
// ファイルを扱ったら、最後にclose()メソッドを呼んで
// 後処理をします。また、これは必ず行うため、
// finally内で行います。
try
{
if( fileReader != null )
{
fileReader.close();
}
}
catch( IOException e )
{
// close()メソッドはIOExceptionがthrows指定されているので
// 一応受け取ります。
e.printStackTrace();
}
}
// こちらはBufferedReaderも組み合わせた場合。
BufferedReader bufferedReader = null;
try
{
// まずFileReaderクラスを作ります。
// このクラス経由でファイルから文字列を取得します。
fileReader = new FileReader( inputFilePath );
// このクラスを対象とするBufferedReaderクラスを用意します。
bufferedReader = new BufferedReader( fileReader );
while( true )
{
// 一行取得します。
String line = bufferedReader.readLine();
if( line == null )
{
// nullが返されてきたら終わりです。
break;
}
// 出力します。
System.out.println( "(文頭)" + line +"(文末)" );
}
// (文頭)あいう(文末)
// (文頭)えお(文末)
// このように、BufferedReaderクラスのreadLine()メソッドなら
// OSに関係なく改行文字で分けて一行ずつ取得してくれます。
}
catch( IOException e )
{
// ファイルが無かった場合等に、この
// IOException例外が投げられます。
e.printStackTrace();
}
finally
{
// 処理が終わったら、最後にclose()メソッドを呼んで
// 後処理をします。また、これは必ず行うため、
// finally内で行います。
try
{
if( bufferedReader != null )
{
bufferedReader.close();
}
}
catch( IOException e )
{
// close()メソッドはIOExceptionがthrows指定されているので
// 一応受け取ります。
e.printStackTrace();
}
// ファイルを扱ったら、最後にclose()メソッドを呼んで
// 後処理をします。また、これは必ず行うため、
// finally内で行います。
try
{
if( fileReader != null )
{
fileReader.close();
}
}
catch( IOException e )
{
// close()メソッドはIOExceptionがthrows指定されているので
// 一応受け取ります。
e.printStackTrace();
}
}
}
}
import java.io.FileReader;
import java.io.BufferedReader;
import java.io.IOException;
public class Sample
{
public static void main( String[] args )
{
// 入力ファイルの絶対パス。
String inputFilePath = "D:/from.txt";
// このファイルには以下のように記述してください。
/*
あいう
えお
*/
// FileReaderクラスの参照型変数。
// ここで作っておくのはfinallyでclose()メソッドを呼ぶためです。
FileReader fileReader = null;
try
{
// まずFileReaderクラスを作ります。
// このクラス経由でファイルから文字列を取得します。
fileReader = new FileReader( inputFilePath );
while( true )
{
// 1バイト取得します。
int i = fileReader.read();
if( i == -1 )
{
// -1が返されてきたら終わりです。
break;
}
// 出力します。
System.out.println( (char)i + " ( 0x" + Integer.toHexString( 0x0000FFFF & i ) + " )" );
}
// あ ( 0x3042 )
// い ( 0x3044 )
// う ( 0x3046 )
//
// ( 0xd )
//
// ( 0xa )
// え ( 0x3048 )
// お ( 0x304a )
// 注:この例はWindowsの場合の例です。
// このように、ファイルから一文字ずつ読み込むことができます。
// ただし、改行文字の変換は行われません。
}
catch( IOException e )
{
// ファイルが無かった場合等に、この
// IOException例外が投げられます。
e.printStackTrace();
}
finally
{
// ファイルを扱ったら、最後にclose()メソッドを呼んで
// 後処理をします。また、これは必ず行うため、
// finally内で行います。
try
{
if( fileReader != null )
{
fileReader.close();
}
}
catch( IOException e )
{
// close()メソッドはIOExceptionがthrows指定されているので
// 一応受け取ります。
e.printStackTrace();
}
}
// こちらはBufferedReaderも組み合わせた場合。
BufferedReader bufferedReader = null;
try
{
// まずFileReaderクラスを作ります。
// このクラス経由でファイルから文字列を取得します。
fileReader = new FileReader( inputFilePath );
// このクラスを対象とするBufferedReaderクラスを用意します。
bufferedReader = new BufferedReader( fileReader );
while( true )
{
// 一行取得します。
String line = bufferedReader.readLine();
if( line == null )
{
// nullが返されてきたら終わりです。
break;
}
// 出力します。
System.out.println( "(文頭)" + line +"(文末)" );
}
// (文頭)あいう(文末)
// (文頭)えお(文末)
// このように、BufferedReaderクラスのreadLine()メソッドなら
// OSに関係なく改行文字で分けて一行ずつ取得してくれます。
}
catch( IOException e )
{
// ファイルが無かった場合等に、この
// IOException例外が投げられます。
e.printStackTrace();
}
finally
{
// 処理が終わったら、最後にclose()メソッドを呼んで
// 後処理をします。また、これは必ず行うため、
// finally内で行います。
try
{
if( bufferedReader != null )
{
bufferedReader.close();
}
}
catch( IOException e )
{
// close()メソッドはIOExceptionがthrows指定されているので
// 一応受け取ります。
e.printStackTrace();
}
// ファイルを扱ったら、最後にclose()メソッドを呼んで
// 後処理をします。また、これは必ず行うため、
// finally内で行います。
try
{
if( fileReader != null )
{
fileReader.close();
}
}
catch( IOException e )
{
// close()メソッドはIOExceptionがthrows指定されているので
// 一応受け取ります。
e.printStackTrace();
}
}
}
}
// Sample.java import java.io.FileReader; import java.io.BufferedReader; import java.io.IOException; public class Sample { public static void main( String[] args ) { // 入力ファイルの絶対パス。 String inputFilePath = "D:/from.txt"; // このファイルには以下のように記述してください。 /* あいう えお */ // FileReaderクラスの参照型変数。 // ここで作っておくのはfinallyでclose()メソッドを呼ぶためです。 FileReader fileReader = null; try { // まずFileReaderクラスを作ります。 // このクラス経由でファイルから文字列を取得します。 fileReader = new FileReader( inputFilePath ); while( true ) { // 1バイト取得します。 int i = fileReader.read(); if( i == -1 ) { // -1が返されてきたら終わりです。 break; } // 出力します。 System.out.println( (char)i + " ( 0x" + Integer.toHexString( 0x0000FFFF & i ) + " )" ); } // あ ( 0x3042 ) // い ( 0x3044 ) // う ( 0x3046 ) // // ( 0xd ) // // ( 0xa ) // え ( 0x3048 ) // お ( 0x304a ) // 注:この例はWindowsの場合の例です。 // このように、ファイルから一文字ずつ読み込むことができます。 // ただし、改行文字の変換は行われません。 } catch( IOException e ) { // ファイルが無かった場合等に、この // IOException例外が投げられます。 e.printStackTrace(); } finally { // ファイルを扱ったら、最後にclose()メソッドを呼んで // 後処理をします。また、これは必ず行うため、 // finally内で行います。 try { if( fileReader != null ) { fileReader.close(); } } catch( IOException e ) { // close()メソッドはIOExceptionがthrows指定されているので // 一応受け取ります。 e.printStackTrace(); } } // こちらはBufferedReaderも組み合わせた場合。 BufferedReader bufferedReader = null; try { // まずFileReaderクラスを作ります。 // このクラス経由でファイルから文字列を取得します。 fileReader = new FileReader( inputFilePath ); // このクラスを対象とするBufferedReaderクラスを用意します。 bufferedReader = new BufferedReader( fileReader ); while( true ) { // 一行取得します。 String line = bufferedReader.readLine(); if( line == null ) { // nullが返されてきたら終わりです。 break; } // 出力します。 System.out.println( "(文頭)" + line +"(文末)" ); } // (文頭)あいう(文末) // (文頭)えお(文末) // このように、BufferedReaderクラスのreadLine()メソッドなら // OSに関係なく改行文字で分けて一行ずつ取得してくれます。 } catch( IOException e ) { // ファイルが無かった場合等に、この // IOException例外が投げられます。 e.printStackTrace(); } finally { // 処理が終わったら、最後にclose()メソッドを呼んで // 後処理をします。また、これは必ず行うため、 // finally内で行います。 try { if( bufferedReader != null ) { bufferedReader.close(); } } catch( IOException e ) { // close()メソッドはIOExceptionがthrows指定されているので // 一応受け取ります。 e.printStackTrace(); } // ファイルを扱ったら、最後にclose()メソッドを呼んで // 後処理をします。また、これは必ず行うため、 // finally内で行います。 try { if( fileReader != null ) { fileReader.close(); } } catch( IOException e ) { // close()メソッドはIOExceptionがthrows指定されているので // 一応受け取ります。 e.printStackTrace(); } } } }