Java ファイルの読み込みと書き込み(BufferedReaderとBufferedWriter)

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

BufferedReaderクラス

  • バッファを利用してファイルを読み込むので処理効率がよくなります
    →ディスクアクセスが減ります
  • 以下はBufferedReaderクラスのメソッドです。
    ・public boolean ready() throws IOException
     →ストリームが読込み可能かどうかを判定します
    ・public String readLine() throws IOException
     →テキスト行を読み込みます
  • 以下はJava8 API仕様のBufferedReaderクラスのリンクです
    https://docs.oracle.com/javase/jp/8/docs/api/java/io/BufferedReader.html

BufferedWriterクラス

  • バッファを利用してファイルに書き込むので処理効率がよくなります
    →ディスクアクセスが減ります
  • 以下はBufferedWriterクラスのメソッドです。
    ・public void newLine() throws IOException
     →改行文字を書き込みます
    ・public void flush() throws IOException
     →バッファの内容を出力します
  • 以下はJava8 API仕様のBufferedWriterクラスのリンクです
    https://docs.oracle.com/javase/jp/8/docs/api/java/io/BufferedWriter.html

コード

サンプルのコードです。
指定したフォルダ配下のtest1.txtを読み込み、その内容をtest2.txtに書き出しています。

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;

/**
 * ファイルの読み書き
 */
class Sample1 {
	void runSample() {

	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))){
		
		// readyメソッドは、ストリームが読込み可能かどうかを判定する
		while (reader.ready()) {
			// readLineメソッドは、テキスト行を読み込む
			writer.write(reader.readLine());
			// newLineメソッドで、改行文字を書き込む
			writer.newLine();
		}
		// flushメソッドでバッファの内容を出力
		writer.flush();	
	} catch (IOException e) {
		e.printStackTrace();
	}
	}
}
public class Test1 {
	public static void main(String[] args) {
		Sample1 s1 = new Sample1();
		s1.runSample(); 
	}
}

ストリーム関連のクラス

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

クラス名 説明
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クラス)



△上に戻る