「Java」CSVファイルをBOM付きで作成するサンプル

構文
1.BOMを付ける
java.io.OutputStream に、BOM の3バイト EF , BB , BF を出力してからCSV BODYを出力するということで、
public static void push(OutputStream out) throws IOException{
out.write(new byte[]{ (byte)0xef,(byte)0xbb, (byte)0xbf });
}
2.public OutputStreamWriter(OutputStream out,String charsetName)
throws UnsupportedEncodingException
指定された文字セットを使うOutputStreamWriterを作成します。

使用例

package com.arkgame.bat;

import java.io.BufferedWriter;
import java.io.FileOutputStream;
import java.io.OutputStreamWriter;

public class Utf8BomDemo {

      //ファイルパス
      private static String DIR_PATH = "C:\\study\\arkgame\\";
      //エンコード
      private static String CHARSET = "UTF-8";

      public static void main(String[] args) {
            FileOutputStream fost = null;
            OutputStreamWriter oswr = null;
            BufferedWriter bfw = null;

            try {
                  fost = new FileOutputStream(DIR_PATH + "test.csv");

                  // BOM の3バイト EF , BB , BF を出力してからCSV BODYを出力
                  fost.write(0xef);
                  // BB
                  fost.write(0xbb);
                  // BF
                  fost.write(0xbf);

                  oswr = new OutputStreamWriter(fost, CHARSET);
                  bfw = new BufferedWriter(oswr);

                  bfw.write("1234,山田太郎,ヤマダロウ,品川区,3-5-210");
                  bfw.write("\r");
                  bfw.write("4567,山田次郎,ヤマダロウ,品川区,3-5-302");

                  // ストリームをフラッシュ
                  bfw.flush();
                  // 出力ストリームをフラッシュ
                  oswr.flush();
                  fost.flush();

                  // ストリームを閉じる
                  bfw.close();
                  oswr.close();
                  fost.close();
                  System.out.println("BOMを付けるテキストファイルを作成した");
            } catch (Exception e) {
                  e.printStackTrace();
            }
      }

}

実行結果
コンソールに下記を表示
BOMを付けるテキストファイルを作成した

test.csv(BOM付)
1234,山田太郎,ヤマダロウ,品川区,3-5-210
4567,山田次郎,ヤマダロウ,品川区,3-5-302

Java

Posted by arkgame