Java バッファを利用したファイルの読み込みと書き込み(BufferedReaderとBufferedWriter)

Javaのバッファを利用したテキストファイルの読み込みと書き込みのサンプルです。
BufferedReaderクラスとBufferedWriterクラスを使用します。

目次

BufferedReaderクラス

  • バッファを利用してファイルを読み込むので処理効率がよくなります。
    →ディスクアクセスが減ります。

BufferedReaderクラスのready()メソッド

public boolean ready() throws IOException
  • ストリームが読込み可能か判定します。

BufferedReaderクラスのreadLine()メソッド

public String readLine() throws IOException

 

BufferedWriterクラス

  • バッファを利用してファイルに書き込むので処理効率がよくなります。
    →ディスクアクセスが減ります。

BufferedWriterクラスのnewLine()メソッド

public void newLine() throws IOException
  • 改行文字を書き込みます。

BufferedWriterクラスのflush()メソッド

public void flush() throws IOException

 

コード

サンプルのコードです。
指定したフォルダ配下のtest1.txtを読み込み、その内容をtest2.txtに書き出しています。
19-24行目は、try-with-resources構文です。リソースを自動でクローズします。

package test1;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.IOException;

public class Test1 {
    public static void main(String[] args) {

        String dir = "D:\\workspace123abc";
        String filename1 = "\\test1.txt";
        String filename2 = "\\test2.txt";
        String charset = "Shift_JIS";

        // try-with-resources構文
        try (BufferedReader reader = new BufferedReader(
                new InputStreamReader(
                    new FileInputStream(dir + filename1),charset));
            BufferedWriter writer = new BufferedWriter(
                new OutputStreamWriter(
                    new FileOutputStream(dir + filename2),charset))){
            
            // ストリームが読込み可能かどうかを判定
            while (reader.ready()) {
                // テキスト行を読み込んで書き込み
                writer.write(reader.readLine());
                // 改行文字の書き込み
                writer.newLine();
            }
            // バッファの内容を出力
            writer.flush(); 
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

 

ストリーム関連のクラス

サンプルコードで使用しているストリーム関連のクラスのまとめです。
読み込みのクラスです。

クラス名 説明
FileInputStream バイトストリームで読み込む
InputStreamReader バイトストリームを文字ストリームに変換する 
文字コードを指定する
BufferedReader 文字ストリームをバッファを使用して読み込む

書き込みのクラスです。

クラス名 説明
FileOutputStream バイトストリームで書き込む
OutputStreamWriter バイトストリームを文字ストリームに変換する 
文字コードを指定する
BufferedWriter 文字ストリームをバッファを使用して書き込む

 

文字コード

InputStreamReaderとOutputStreamWriterで指定する主な文字コードです。

文字コード 指定する文字コード名称
シフトJIS Shift_JIS
SJIS
UTF8 UTF-8

関連の記事

Java リソースを自動でクローズするサンプル(try-with-resources構文)
Java テキストファイルの読み書きのサンプル(Filesクラス)
Java バイナリファイルの読み込みと書き込み(FileInputStreamとFileOutputStream)
Java 文字コードを指定したファイルの読み込みと書き込み(InputStreamReaderとOutputStreamWriter)
Java フォルダ内のファイルの一覧を取得するサンプル(Fileクラス)
Java ドライブの容量と空き容量を取得するサンプル(Fileクラス)

 はまったらエンジニア特化型Q&Aサイト
【teratail(テラテイル)】で質問しましょう!


△上に戻る