Rainbow Engine

IT技術を分かりやすく簡潔にまとめることによる学習の効率化、また日常の気付きを記録に残すことを目指します。

Java

Javaでcsvファイルに書き込みを行う方法(サンプルプログラム付き)

投稿日:2021年3月10日 更新日:

<目次>

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

ファイルに書き出す文字列を登録するメソッドが「append」メソッドです。appendを行うだけでは書き込み自体は行われず、後述するflush()かclose()を行って初めて書き込みがされます。
 
(例)
csvWriter.append();

(1-1-3) 書き込み(flush)

ファイルへの書き込み(ディスクへの書き込み)を実施するのが「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)

目次にもどる

Adsense審査用広告コード


Adsense審査用広告コード


-Java

執筆者:


comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

関連記事

Javaで実装したLinkedListのサンプルプログラムをご紹介

<目次> (1) Javaで実装したLinkedListのサンプルプログラムをご紹介  (1-1) LinkedListの概要  (1-2) LinkedListの特徴  (1-3) LinkedLi …

Javaでファイルへの書き込みする方法の基礎(追記・上書き、改行の方法等)

<目次> (1) Javaでファイルへの書き込みする方法の基礎(追記・上書き、改行の方法等)  (1-1) STEP1:FileWriterクラスのインスタンス化  (1-2) STEP2:ファイルへ …

JavaのJDBC接続でjava.sql.SQLRecoverableException: Closed Connectionが発生した時の解決メモ

(0)目次&概説 (1) エラー事象の概要  (1-1) エラーの発生状況  (1-2) エラーメッセージ全文 (2) エラーの原因 (3) エラーの対処方法  (3-1) エラーの修正内容  (3- …

JSP/Servletで画面毎のアクセスカウンターを作成してみた(パート1:仕様説明編)

(0)目次&概説 (1) 仕様について  (1-1) アーキテクチャ(アプリ/DB)  (1-2) アプリの仕様概要  (1-3) データベースの仕様概要 (2) ソースコード (3) エラー対応 ( …

JavaのMapの種類や特徴について(HashMap/LinkedHashMap/TreeMap)

<目次> (1) JavaのMapの種類や特徴について(HashMap/LinkedHashMap/TreeMap)  (1-1) Mapとは?  (1-2) Mapの種類や特徴   (1-2-1) …

  • English (United States)
  • 日本語
Top