(1) Javaでcsvファイルに書き込みを行う方法
(1-1) 構文
(1-2) サンプルプログラム
(1) Javaでcsvファイルに書き込みを行う方法
Javaでcsvファイルを生成し、そこに書き込みを行う方法についてご紹介します。
(1-1) 構文
(1-1-1) FileWriterインスタンスの生成
FileWriterクラスはFileへの書き込みを行うためのクラスです。WriterクラスやOutputStreamWriterクラスを継承しており、バイナリをテキストに変換するいわゆる「Writer」機能をファイルに特化させたクラスです。
FileWriter csvWriter = new FileWriter("/tmp_rainbow/"+filename);
(1-1-2) 追加登録(append)
csvWriter.append();
(1-1-3) 書き込み(flush)
csvWriter.flush();
(1-1-4) クローズ(close)
csvWriter.close();
(表)メソッドまとめ
| append([追加する文字列]) | FileWriterオブジェクトのバッファ(⇒バッファとは?)の末尾に対してデータの追加を行うメソッドです。appendはあくまで「追加登録」のようなイメージで、まだメモリ上に残ってる可能性があります。 |
| flush() | flushは「流す」という意味の単語で、FileWriterのバッファ(⇒バッファとは?)に追加されたデータを、実際にファイルに書き込みます(メモリ⇒ディスクへの書き込み)。また書き込みの完了に伴って、バッファを空にします。ストリーム(あるソースから取得した一連のオブジェクトを表す抽象概念)は開いたままなので、引き続き書き込み操作を継続する事ができます。 |
| close() | close()はストリームを閉じるメソッドです。内部的にはflushを行っているため、closeを呼ぶ事でもデータの書き込みはされますが、flushと違ってストリームを閉じるため、再度の書き込みを行うためにはストリームを再びオープンする必要があります。 |
(1-2) サンプルプログラム
(サンプルプログラム)
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
public class GenerateCsv {
public static void main(String args[]) {
//csvのファイル名
String flname = "CsvGenerateTest.csv";
//csvに書き込むサンプルデータ
ArrayList<String> rowdata = new ArrayList<String>();
rowdata.add("aaa,bbb,ccc,ddd");
rowdata.add("eee,fff,ggg,hhh");
rowdata.add("iii,jjj,kkk,lll");
//csv書き込みメソッドの実行
convertToCSV(rowdata, flname);
}
public static void convertToCSV(ArrayList<String> rows, String filename) {
try {
//FileWriterインスタンスの生成
FileWriter csvWriter = new FileWriter("/tmp_rainbow/"+filename);
//各行をループ
for(int i=0; i<rows.size(); i++) {
//バッファに追加(行の各項目をカンマ区切りで連結)
csvWriter.append(String.join(",", rows.get(i)));
System.out.println(String.join(",", rows.get(i)));
//バッファに追加(改行)
csvWriter.append("\n");
}
//ファイルへの書き込み
csvWriter.flush();
//ストリームを閉じる
csvWriter.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
・プログラム実行前
ディレクトリにcsvファイルは存在していません。
(図131)

・プログラム実行後
ディレクトリに指定した名前のcsvファイルが生成されました。
(図132)

csvの中身を見ると、狙った文字列が書き込みされています。
(図133)
