[復習]javaでファイルの読み込み書き込み(JDK6)


目的

java.nio.file.Filesを使ってみる前に復習(最近やってなかったので・・・)。

ソース

FileInputOutput.java
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;

public class FileInputOutput {

    /**
     * ファイルの読み込み書込みサンプル。<br>
     * ファイルを読み込んで別ファイルに書き込みする。<br>
     * 入力ファイルはSJIS。<br>
     * 出力ファイルはUTF-8(BOM付)
     *
     * @param args
     */
    public static void main(String args[]) throws Exception {

        BufferedReader br = null;
        BufferedWriter bw = null;

        try {
            // ファイル読み込み
            //
            File inFile = new File("D:/", "input.csv");
            br = new BufferedReader(new InputStreamReader(new FileInputStream(
                    inFile), "SJIS"));

            // ファイル出力用ストリーム
            File outFile = new File("D:/", "output.csv");
            FileOutputStream os = new FileOutputStream(outFile);

            // BOMを付与。
            os.write(0xef);
            os.write(0xbb);
            os.write(0xbf);

            // BufferedWriterの生成
            bw = new BufferedWriter(new OutputStreamWriter(os, "UTF-8"));

            String str;

            // ファイルに書き込み
            while ((str = br.readLine()) != null) {
                bw.write(str + "\n");
            }

            // ファイル削除(コメントアウト外すと読込ファイル削除できるよ)
            // inFile.delete();
            br.close();
            bw.close();
        } finally {
            if (br != null) {
                br.close();
            }
            if (bw != null) {
                bw.close();
            }
        }
    }
}

入力ファイル

出力ファイル

ちゃんと入力ファイルの内容がUTF-8(BOM付)で出力できました。