Javaのファイルの読み込みと書き込みで文字コードを指定するサンプルです。
(確認環境:Java 8)
目次
サンプル | 文字コードを指定してファイルを読み込む(InputStreamReader) |
文字コードを指定してファイルに書き込む(OutputStreamWriter) | |
指定する文字コード |
※注 現在ファイルの読み書きはJava7で追加されたjava.nio.file.Filesが使用されることが多いです。
Java テキストファイルの読み書き(NIO.2のFiles)
文字コードを指定してファイルを読み込む(InputStreamReader)
public InputStreamReader(InputStream in,Charset cs) |
文字コードを指定してファイルを読み込むサンプルです。
package test1;
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.InputStreamReader;
import java.io.IOException;
public class Test1 {
public static void main(String[] args) {
String dir = "D:\\test3";
String file1 = "\\test1.txt";
String charset = "Shift_JIS";
try (
FileInputStream fi = new FileInputStream(dir + file1);
InputStreamReader is = new InputStreamReader(fi,charset);
){
while (is.ready()) {
System.out.println(is.read()); //数値(文字コード)が出力される
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
15行目は、コンストラクタの引数で文字コードを指定しています。
14,15行目は、try-with-resources構文です。リソースを自動でクローズします。
17行目は、ストリームが読込み可能かどうかを判定しています。
以下はJava8 API仕様のInputStreamReaderクラスのリンクです。
https://docs.oracle.com/javase/jp/8/docs/api/java/io/InputStreamReader.html
文字コードを指定してファイルに書き込む(OutputStreamWriter)
public OutputStreamWriter(OutputStream out,Charset cs) |
文字コードを指定してファイルに書き込むサンプルです。
ファイルが存在しない場合は、新規作成されます。
package test1;
import java.io.FileOutputStream;
import java.io.OutputStreamWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class Test1 {
public static void main(String[] args) {
String dir = "D:\\test3";
String file1 = "\\test1.txt";
String charset = "Shift_JIS";
List<String> list = new ArrayList<>(Arrays.asList("赤","黄","青"));
try (
FileOutputStream fo = new FileOutputStream(dir + file1);
OutputStreamWriter ow = new OutputStreamWriter(fo,charset);
){
for (String a : list) {
ow.write(a); //改行なしで書かれる
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
15行目は、コンストラクタの引数で文字コードを指定しています。
14,15行目は、try-with-resources構文です。リソースを自動でクローズします。
21行目は、書き込みを行っています。
以下はJava8 API仕様のOutputStreamWriterクラスのリンクです。
https://docs.oracle.com/javase/jp/8/docs/api/java/io/OutputStreamWriter.html
指定する文字コード
InputStreamReaderとOutputStreamWriterで指定する主な文字コードです。
文字コード | 指定する文字コード名称 |
---|---|
シフトJIS | Shift_JIS SJIS |
UTF8 | UTF-8 |
関連の記事
Java テキストファイルの読み書き(NIO.2のFiles)
Java バッファでファイルの読み書き(BufferedReader)