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

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

関連記事

EclipseでJavaプロジェクトを同一サーバ内で別名コピーする方法

(0)目次&概説 (1) プロジェクトの別名コピーの手順  (1-1) プロジェクトのコピー&ペースト  (1-2) コピーしたプロジェクトをTomcatへ登録  (1-3) Tomcatサーバの再起 …

Javaのsynchronizedとは?ある場合とない場合のサンプルPGを比較付き

<目次> (1) Javaのsynchronizedとは?ある場合とない場合のサンプルPGを比較付き  (1-1) synchronizedの概要  (1-2) synchronizedの構文  (1 …

TwitterのAPIライブラリ(Twitter4j)でフォローを行う方法

<目次> (1) TwitterのAPIライブラリ(Twitter4j)でフォローを行う方法  (1-1) 構文  (1-2) サンプルプログラム (1) TwitterのAPIライブラリ(Twitt …

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

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

Javaのメソッドで複数の戻り値を返却する方法

<目次> (1) Javaのメソッドで複数の戻り値を返却する方法  (1-1) 同じ型の値を複数返却したい場合 ⇒ 配列やList   ◎ポイント   ◎サンプル  (1-2) 異なる型の関連する値を …

  • English (United States)
  • 日本語
Top