(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)