JavaA2Z

KAB-studio > プログラミング > JavaA2Z > FileReaderとは

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内でう。

(KAB-studioからのおしらせです)

サンプルプログラム(とか)サンプルを別ウィンドウで表示サンプルをクリップボードへコピー(WindowsでIEの場合のみ)

// 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();
            }
        }
    }
}
// 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();
            }
        }
    }
}

この単語を含むページ

「みだし」に含まれているページ

「サンプルプログラムとか」に含まれているページ

はてなブックマーク 詳細を表示 はてなブックマーク ブックマーク数
livedoorクリップ 詳細を表示 livedoorクリップ ブックマーク数
Yahoo!ブックマーク 詳細を表示 users
del.icio.us 登録する RSSに登録
サンプルを別ウィンドウで表示
サンプルをクリップボードへコピー(WindowsでIEの場合のみ)
update:2005/11/15
このページは、Javaプログラミング言語についての用語を網羅した辞書「JavaA2Z」の一ページです。
詳しくは「JavaA2Z」表紙の説明をご覧ください。