【サンプル有】JavaでCSVファイルを出力する方法をていねいに解説!
  • facebookページ
  • twitterページ
  • 2021.01.01

    【サンプル有】JavaでCSVファイルを出力する方法をていねいに解説!

    JavaでCSV出力の方法

    この記事では、JavaのCSV出力法を解説します!

    CSVに限らず、Javaでファイルを出力する流れは以下の通りです。

    Javaでファイルを出力する流れ
    • ファイルを開く
    • ファイルに書き込む
    • ファイルを閉じて出力

    それぞれの処理について、簡単に説明していきます。

    (1)ファイルを開く

    Javaでファイルを開くには、FileWriterクラスを使います。

    FileWriterクラスは、文字ファイルを書き込むためのクラスです。

    開くファイルがない場合は、新しくファイルを作成してくれます。

    (2)ファイルに書き込む

    ファイルを開いた後に、文字や情報を書き込む処理が入ります。

    具体的な書き込み方法は後述します!

    (3)ファイルを閉じて出力

    厳密には、ファイルを閉じる処理が入ることで、実際のファイルに文字列が書き込まれます。

    ファイルを閉じた後に出力することで、目的のファイルを保存できます。

    では、この流れを元に、CSV出力の方法を見ていきましょう。

    CSV出力のサンプルコード

    ここでは、CSVファイルを出力するサンプルコードを紹介します。

    サンプルコードは次の通りです。

    上記のように、Javaで書き込んだ内容がCSVファイルで出力できました。

    それぞれの処理について、解説します。

    (1)import部分について

    まずは、Javaファイル冒頭のimport部分について説明します。

    「import java.io.FileWriter」は、前述したようにファイルを開く・書き込む際に必要です。

    「import java.io.BufferedWriter」で、文字をバッファリングします。

    文字をバッファリングすることで、文字・配列・文字列を効率良く、文字型出力ストリームに書き込めるのです。

    ポテパンダの一言メモ

    バッファリング処理とは、データを一旦バッファ(メモリー)に預ける処理をいいます。

    例えば、書き込み処理であれば、バッファに蓄積し、データが満杯になった時点でファイルに出力します。

    こうすることで、データを一括で処理できるため、データ読み書きを効率化できるという仕組みです。

    また、BufferedWriterクラスで用意されている「newLine()」メソッドを使えば、改行文字を書き込んでくれるなど、さまざまなメリットがあります。

    「import java.io.PrintWriter」で、ファイルに書き込む処理を行います。

    「import java.io.IOException」は、入出力時の例外発生を通知するために必要です。

    (2)mainクラスについて

    上記部分の処理を説明します。

    とはいえ、見ればわかるように、CSVファイルに書き込みたいデータを定義しているクラスです。

    それぞれ、データ型配列で要素を記述しています。

    必要なデータ分だけ配列を用意すればOKです。

    上記の部分で、exportCsvクラスにデータをまとめて渡しています。

    (3)出力ファイルの作成部分について

    上記の部分について詳しく見ていきましょう!

    FileWriterクラスのオブジェクト(fw)を生成しています。

    オブジェクトの生成に合わせて、ファイルを開く処理も行っているのです。

    ここでは、「Userdata.csv」という名前のCSVファイルが存在すれば開き、存在しない場合は新規作成します。

    第2引数の「false」は、追記・上書きの制御をしています。

    • true:追記
    • false:上書き

    といった風な処理になります。ここでは上書きとしました。

    PrintWriterクラスのオブジェクトを(pw)生成しています。

    「new BufferedWriter(fw)」の処理も入れることで、文字のバッファリングも合わせて行っているのです。

    (4)ヘッダーを作成する

    上記の記述で、CSVファイルのヘッダーを作成しています。

    ヘッダーが不要であれば、この記述は不要です!

    カンマ区切りで記述することで、列を作成しています。

    そして、最後の「pw.println();」で、改行を入れています。

    (5)データを書き込む

    上記の処理で、データを1行ずつ書き込んでいます。

    ヘッダー部分と仕組みは同じです。

    for文をデータの数分回すことで、全てのデータを書き込んでいます。

    (6)ファイルを閉じて出力

    最後に、close()メソッドでCSVファイルを閉じ、出力を行います。

    出力確認用のメッセージが、確認ようなのでなくてもOKです!

    プログラムを実行すれば、CSVファイルが出力されます。

    (7)出力に失敗したときの処理

    IOExceptionで、入出力時の例外発生を通知しています。

    printStackTrace()メソッドで、スタックトレースを出力します。

    ポテパンダの一言メモ

    スタックトレースとは、実行したメソッドの時系列の一覧のことです。

    例外が発生した際に、

    ・例外が発生したメソッド
    ・例外発生までに経たメソッド

    がわかるようになっています。

    表示は、新しいものが上に、古いものが下に表示されます。

    CSV出力でダブルクォーテーションを出力する

    ダブルクォーテーションを出力するには、エスケープシーケンスを使います。

    記述方法は、「”\””」です。

    今回の例では、次のように変更してみました。

    名前の部分だけダブルクォーテーションで囲んでみました。

    出力結果は次の通りです。

    このように出力できています。

    ただし、出力はCSVファイルを開くツールによって異なります。

    今回は、「Atom」というテキストエディタで確認しています。

    先ほどの結果で見せた「Numbers」では、残念ながら表示されませんでした。

    csv出力で改行を出力する

    改行を出力する場合は、サンプルコードでも書いているように「pw.println();」でOKです。

    もしくは、改行もエスケープシーケンスを使って「”\n”」と表せます。

    サンプルコードをエスケープシーケンスを使って記述すると、次の通りです。

    実行結果は同じになり、ちゃんと改行されます!

    CSV出力で追記するには?

    CSVファイルに追記するには、FileWriterの第2引数を「true」にすればOKです。

    これで追記できるようになります。

    試しに、ファイルを作成している状態で、下記のようにヘッダー部分をコメントアウトして実行してみます。

    ■実行結果

    このように、同じデータが追記されています。



    優良フリーランス案件多数掲載中!
    フリーランスエンジニアの案件をお探しなら
    ポテパンフリーランス

    この記事をシェア

    • Facebookシェア
    • Twitterシェア
    • Hatenaシェア
    • Lineシェア
    pickup









    ABOUT US

    ポテパンはエンジニアと企業の最適なマッチングを追求する企業です。

    READ MORE