Javaのファイルの読み込みと書き込みのサンプルです。
InputStreamReaderクラスとOutputStreamWriterクラスは文字コードを指定できます。
| 確認環境 ・Java 8 |
目次
InputStreamReaderクラス
- コンストラクタで、文字コードを指定してファイルを読み込むことができます。
- FileReaderクラスでは文字コードを指定できません。
- 以下はJava8 API仕様のInputStreamReaderクラスのリンクです。
https://docs.oracle.com/javase/jp/8/docs/api/java/io/InputStreamReader.html
OutputStreamWriterクラス
- コンストラクタで、文字コードを指定してファイルに書き出すことができます
- FileWriterクラスでは文字コードを指定できません。
- 以下はJava8 API仕様のOutputStreamWriterクラスのリンクです。
https://docs.oracle.com/javase/jp/8/docs/api/java/io/OutputStreamWriter.html
サンプルコード
指定したフォルダ配下のファイル(test1.txt)を読み込み、その内容を別のファイル(test2.txt)に書き出しています。
| ※注 現在ファイルの読み書きは一般的にJava7で追加されたjava.nio.file.Filesが使用されます。 Java テキストファイルの読み書きのサンプル(Filesクラス) 以下のサンプルは古い書き方です。 |
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 = "E:\\workspace123abc";
String file1 = "\\test1.txt";
String file2 = "\\test2.txt";
String charset = "Shift_JIS";
try (
FileInputStream fi = new FileInputStream(dir + file1);
InputStreamReader is = new InputStreamReader(fi,charset);
BufferedReader reader = new BufferedReader(is);
FileOutputStream fo = new FileOutputStream(dir + file2);
OutputStreamWriter ow = new OutputStreamWriter(fo,charset);
BufferedWriter writer = new BufferedWriter(ow);
){
while (reader.ready()) {
writer.write(reader.readLine());
writer.newLine();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
20,24行目で文字コードを指定しています。コンストラクタの引数で指定します。
19~25行目は、try-with-resources構文です。リソースを自動でクローズします。
21,25行目のBufferedReaderクラスとBufferedWriterクラスは、バッファ処理が使えるようになり処理の性能が上がります。
27行目は、ストリームが読込み可能かどうかを判定しています。
28行目は、テキスト行を読み込んで書き込みを行っています。
29行目は、改行文字を書き込んでいます。
指定する文字コード
InputStreamReaderとOutputStreamWriterで指定する主な文字コードです。
| 文字コード | 指定する文字コード名称 |
|---|---|
| シフトJIS | Shift_JIS SJIS |
| UTF8 | UTF-8 |
関連の記事
Java テキストファイルの読み書きのサンプル(Filesクラス)
Java バイナリファイルの読み込みと書き込み
Java ファイルの読み込みと書き込み(バッファを使用するクラス)
Java フォルダ内のファイルの一覧を取得するサンプル(Fileクラス)
Java ドライブの容量と空き容量を取得するサンプル(Fileクラス)