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) 対策 (1) Javaのフォー …

Javaのラッパークラスとは?使い方や一覧をご紹介

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

JavaScriptのオブジェクト(object)の書き方やメソッドを追加する方法

  <目次> (1) JavaScriptのオブジェクト(object)の書き方やメソッドを追加する方法  (1-1) 構文①:オブジェクト作成  (1-2) 構文②:オブジェクトにアクセス …

Javaでファイル読み込みを行う方法+サンプルプログラムもご紹介

<目次> (1) Javaでファイル読み込み&書き込みを行う方法  (1-1) 構文  (1-2) サンプルプログラム (1) Javaでファイル読み込み&書き込みを行う方法 (1-1) 構文 (構文 …

JSP/Servletでログイン・ログアウト機能を作成する方法

<目次> (1) JSP/Servletでログイン・ログアウト機能を作成する方法  (1-1) ログイン   (1-1-1) 概要・構文   (1-1-2) サンプルプログラム  (1-2) ログアウ …

  • English (United States)
  • 日本語
Top