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のラッパークラスとは?使い方や一覧をご紹介

<目次> (1) Javaのラッパークラスとは?使い方や一覧をご紹介  (1-1) ラッパークラスとは?  (1-2) 構文(オブジェクト生成)  (1-3) 代表的なメソッド(Integerを例に) …

JavaScriptでformをPOSTリクエストでsubmitするプログラムの例

  <目次> (1) JavaScriptでformをPOSTリクエストでsubmitするプログラムの例  (1-1) 概要  (1-2) 構文  (1-3) サンプルプログラム  (1-4 …

Javaのアーキテクチャ概要やプログラムのコンパイルから実行までの流れ

(0)目次&概説 (1) 記事の目的  (1-1) 目的 (2) Javaのアーキテクチャ概要・概観  (2-1) プログラムのコンパイル~実行の流れ  (2-2) Javaアーキテクチャの特徴    …

double型で誤差が発生する件について+発生事例やサンプルプログラムも紹介

<目次> (1) double型では誤差が発生する事について  (1-1) double型は近似値を使用している  (1-2) double型の誤差の例 (1) double型で誤差が発生する件につい …

Servlet(サーブレット)におけるフォワード(forward)とリダイレクト(redirect)の違い

<目次> (1) Servlet(サーブレット)におけるフォワード(forward)とリダイレクト(redirect)の違い  (1-1) フォワード(forward)とは?  (1-2) リダイレク …

  • English (United States)
  • 日本語
Top