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のprintfで日付の書式設定を行う方法

<目次> (1) Javaのprintfで日付の書式設定を行う方法  (1-1) printfの基本構文  (1-2) 時刻に関するフォーマット  (1-3) 日付に関するフォーマット (1) Jav …

Javaの動的Webプロジェクト作成での事前設定と雛形Webプロジェクト作成

「動的Webプロジェクト」とはHTMLのような静的ページのみならず、ServletやJSPを用いてWebアプリケーション開発をする際に作成します。本記事ではEclipseにて「動的Webプロジェクト」 …

JavaでJSON形式のデータから値を抽出する方法+代表的なエラー対処も紹介

(0)目次&概説 (1) 記事の目的  (1-1) 目的 (2) JSON形式の概要  (2-1) JSON形式とは?  (2-2) JSON形式のフォーマット (3) JSON形式の抽出方法・事前準 …

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

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

APサーバ(Java)⇒DBサーバ(OracleDB 11g)へJDBC接続する方法まとめ

(0)目次 (1) 前提条件 (2) JDBCドライバーのインストール  (2-1) JDBCドライバーをダウンロード  (2-2) APサーバにアップロード・解凍 (3) プログラムの実装  (3- …

  • English (United States)
  • 日本語
Top