Java ファイルの読み込みと書き込み(InputStreamReaderとOutputStreamWriter)

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

InputStreamReaderクラス

  • 文字コードを指定してファイルを読み込むことができます。
    →FileReaderクラスでは文字コードを指定できません。
  • 以下はFileInputStreamクラスのメソッドです。
    public int read() throws IOException
     →単一の文字を読み込みます。終わりに達した場合、-1を返します。
  • 以下はJava8 API仕様のInputStreamReaderクラスのリンクです。
    https://docs.oracle.com/javase/jp/8/docs/api/java/io/InputStreamReader.html

OutputStreamWriterクラス

  • 文字コードを指定してファイルに書き出すことができます。
    →FileWriterクラスでは文字コードを指定できません。
  • 以下はFileInputStreamクラスのメソッドです。
    public void write(int c) throws IOException
     →単一の文字を書き込みます。
  • 以下はJava8 API仕様のOutputStreamWriterクラスのリンクです。
    https://docs.oracle.com/javase/jp/8/docs/api/java/io/OutputStreamWriter.html

コード

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

package test1;

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 (InputStreamReader reader = new InputStreamReader(
			new FileInputStream(dir + filename1),charset);
		OutputStreamWriter writer = new OutputStreamWriter(
			new FileOutputStream(dir + filename2),charset)){ 
		
		// 読み込みと書き込み
		int data;
		// readメソッドは終わりに達した場合、-1を返す
		while ((data = reader.read()) != -1) {
			writer.write(data);
//			System.out.println((char)data);
		}
	} catch (IOException e) {
		e.printStackTrace();
	}
	}
}
public class Test1 {
	public static void main(String[] args) {
		Sample1 s1 = new Sample1();
		s1.runSample(); 
	}
}

文字コード

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

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

バッファ処理

通常はバッファ処理が使えるBufferedReaderクラスとBufferedWriterクラスも使用します。
使用方法は以下を参照願います。
Java ファイルの読み込みと書き込み(BufferedReaderとBufferedWriter)

関連の記事

Java try-with-resources構文のサンプル
Java ファイルの読み込みと書き込み(Filesクラス)
Java バイナリファイルの読み込みと書き込み(FileInputStreamとFileOutputStream)
Java ファイルの読み込みと書き込み(BufferedReaderとBufferedWriter)
Java フォルダ内のファイルの一覧を取得するサンプル(Fileクラス)
Java ドライブの容量とドライブの空き容量を取得する(Fileクラス)




△上に戻る