ファイル操作/CSV取込みサンプルを作ってみた
の編集
Top
/
ファイル操作
/
CSV取込みサンプルを作ってみた
[
トップ
] [
編集
|
差分
|
バックアップ
|
添付
|
リロード
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
]
-- 雛形とするページ --
AutoTicketLinkName
FrontPage
MenuBar
WikiWikiWeb
お約束
その他
その他/JavaでBeep(Bell)を鳴らすサンプルソース
その他/UnsupportedClassVersionErrorの原因及び対処法
その他/シェルに終了コードを渡す方法
システム関連
システム関連/Javaの情報を取得する
システム関連/Javaを実行するOS情報を取得する
ソート
ソート/ArrayListのソートサンプル
ソート/独自クラスでキー指定のソートサンプル
ソート/独自クラスのソートサンプル
ネットワーク
ネットワーク/HTTP(GET)サンプルソース
ファイル操作
ファイル操作/basename,dirnameのサンプル
ファイル操作/CSV取込みサンプルを作ってみた
ファイル操作/サブディレクトリ内を含むファイル一覧を取得
ファイル操作/テキストファイルの出力
ファイル操作/テキストファイルの読み込み
ファイル操作/ディレクトリ配下のファイルを削除する
ファイル操作/デフォルトのファイル文字コードを確認する
ファイル操作/デフォルトの改行コードを確認する
ファイル操作/ファイルかディレクトリかを確認する
ファイル操作/ファイルの削除
ファイル操作/ファイルを追記モード開き文字列を追加する
ファイル操作/ファイル・ディレクトリの有無(存在)確認
ファイル操作/ファイル一覧を標示する
プライバシーポリシー
変数操作
変数操作/メンバ変数の初期値はどのような値になっているか
変数操作/数値から文字列に変換するサンプルソース
変数操作/文字列から数値に変換するサンプルソース
数値操作
数値操作/数値をカンマ区切りで整形したい
数値操作/数値をカンマ区切りで整形し+記号を付けたい
数値操作/数値型の最大値・最小値
文字列操作
文字列操作/文字列が数字のみで構成されているかを確認する
文字列操作/文字列のリーバス(反転)
文字列操作/英字の大文字・小文字変換サンプル
日時操作
日時操作/DATEから年月日を抽出するサンプル
日時操作/うるう年のチェックを行う
最初にお読みください
標準入出力
標準入出力/STDOUTとSTDERRに出力する方法
標準入出力/パイプによるデータを受け取る方法
環境
環境/Eclipseで変数名なども補完できるようにする
環境/native2asciiで変換された文字列をもとに戻す
環境/UbuntuにaptコマンドでNetBeansをインストールしてみる
逆引きJavaサンプル
配列等操作
配列等操作/ArrayListのリバース(反転)サンプル
配列等操作/HashMapを使ったサンプル
#navi(../) * CSV取込みサンプルを作ってみた [#g9b7d438] CSVファイルを1行ずつ読み込み、Stringのsplitで分割し、ArrayListに格納するサンプルを以下に記します。 #contents * 関連記事 [#c8ad8eac] -[[テキストファイルの読み込みサンプル>ファイル操作/テキストファイルの読み込み]] -[[テキストファイルの出力>ファイル操作/テキストファイルの出力]] -[[ファイルを追記モード開き文字列を追加する>ファイル操作/ファイルを追記モード開き文字列を追加する]] //-[[CSV取込みサンプルを作ってみた>ファイル操作/CSV取込みサンプルを作ってみた]] * 注意事項 [#r12a01ff] 本サンプルソースは、ファイルの読み込み部分を[[try-with-resources>http://docs.oracle.com/javase/jp/7/technotes/guides/language/try-with-resources.html]]で記述していますので、''Java7''以降でコンパイルおよび実行してください。~ テキストファイルの読み込みについては以下の記事を参考にしてください。 -[[テキストファイルの読み込みサンプルソース>ファイル操作/テキストファイルの読み込み]] * CSV取込みサンプルソース [#q10cf2c4] 本サンプルソースは、引数で渡されたファイルの有無を調べます。~ ファイルが存在しない場合は、処理を中断します。~ 引数が未指定の場合は、usage()が呼び出され処理を中断します。~ ファイルの文字コードについては、System.getProperty("file.encoding")でデフォルトの文字コードを取得しています。 引数に指定されたファイルを開き、カンマ(,)でsplitしたStringの配列(String[])をArrayListに追加しています。~ その後、幅10で(%10s)でCSVを整形し表示しています。~ 尚、全角の場合はString.formatの%sでは、半角分広がり崩れてしまいますが、サンプルソースなので表示の崩れ対応はしていません。~ ListにStringの配列で格納すれば、以後、編集が楽であろうと思い作成したサンプルソースになります。 &ref(ReadCsv.java); LF import java.util.List; import java.util.ArrayList; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.InputStreamReader; import java.io.FileNotFoundException; import java.io.IOException; class ReadCsv { String csvfile; private String getCsvFilename() { return this.csvfile; } private void setCsvFilename(String s) { this.csvfile = s; } private void usage() { System.err.println("Usage: java ReadCsv <csv file>"); } // constructor ReadCsv(String[] args) { // check args if (args.length != 1) { usage(); System.exit(1); } // check file if (!(new File(args[0])).exists()) { System.err.println(args[0] + ": file not found."); System.exit(2); } // set csv filename setCsvFilename(args[0]); } // read csvfile private List<String[]> readCsvfile2Array() { String csv = this.getCsvFilename(); List<String[]> csvList = new ArrayList<String[]>(); try (BufferedReader br = new BufferedReader( new InputStreamReader( new FileInputStream(csv), System.getProperty("file.encoding")))) { String l = br.readLine(); while (l != null) { csvList.add(l.split(",")); l = br.readLine(); } } catch (FileNotFoundException e) { System.err.println(csv + " not found."); } catch (IOException e) { System.err.println("I/O error."); } catch (Exception e) { e.printStackTrace(); } return csvList; } // main public static void main(String[] args) { ReadCsv me = new ReadCsv(args); List<String[]> csvList = me.readCsvfile2Array(); // display csvList if (csvList != null) { System.out.printf("%d line\n", csvList.size()); for (String[] s : csvList) { String l ="|"; for (int i = 0; s.length > i; i++) { l += String.format("%10s|", s[i]); } System.out.println(l); } } } } * 実行結果 [#a6628b91] 上記のサンプルソースをコンパイルして実行してみます。~ 使用したCSVファイルは以下の通りです。 &ref(data.csv); UTF-8, LF Java,Ruby,Python,Perl,PHP 10,20,30,40,50 あ,い,う,え,お + コンパイルします。 $ javac ReadCsv.java #br +実行します。 $ java ReadCsv data.csv 3 line | Java| Ruby| Python| Perl| PHP| | 10| 20| 30| 40| 50| | あ| い| う| え| お| ちなみに引数なし、引数に指定したファイルがない場合は以下のような出力となります。 $ java ReadCsv Usage: java ReadCsv <csv file> $ java ReadCsv foo.csv foo.csv: file not found. 以上、JavaでCSVファイルを読み込み、加工しやすい?ListにString[]で格納するサンプルソースでした。
タイムスタンプを変更しない
#navi(../) * CSV取込みサンプルを作ってみた [#g9b7d438] CSVファイルを1行ずつ読み込み、Stringのsplitで分割し、ArrayListに格納するサンプルを以下に記します。 #contents * 関連記事 [#c8ad8eac] -[[テキストファイルの読み込みサンプル>ファイル操作/テキストファイルの読み込み]] -[[テキストファイルの出力>ファイル操作/テキストファイルの出力]] -[[ファイルを追記モード開き文字列を追加する>ファイル操作/ファイルを追記モード開き文字列を追加する]] //-[[CSV取込みサンプルを作ってみた>ファイル操作/CSV取込みサンプルを作ってみた]] * 注意事項 [#r12a01ff] 本サンプルソースは、ファイルの読み込み部分を[[try-with-resources>http://docs.oracle.com/javase/jp/7/technotes/guides/language/try-with-resources.html]]で記述していますので、''Java7''以降でコンパイルおよび実行してください。~ テキストファイルの読み込みについては以下の記事を参考にしてください。 -[[テキストファイルの読み込みサンプルソース>ファイル操作/テキストファイルの読み込み]] * CSV取込みサンプルソース [#q10cf2c4] 本サンプルソースは、引数で渡されたファイルの有無を調べます。~ ファイルが存在しない場合は、処理を中断します。~ 引数が未指定の場合は、usage()が呼び出され処理を中断します。~ ファイルの文字コードについては、System.getProperty("file.encoding")でデフォルトの文字コードを取得しています。 引数に指定されたファイルを開き、カンマ(,)でsplitしたStringの配列(String[])をArrayListに追加しています。~ その後、幅10で(%10s)でCSVを整形し表示しています。~ 尚、全角の場合はString.formatの%sでは、半角分広がり崩れてしまいますが、サンプルソースなので表示の崩れ対応はしていません。~ ListにStringの配列で格納すれば、以後、編集が楽であろうと思い作成したサンプルソースになります。 &ref(ReadCsv.java); LF import java.util.List; import java.util.ArrayList; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.InputStreamReader; import java.io.FileNotFoundException; import java.io.IOException; class ReadCsv { String csvfile; private String getCsvFilename() { return this.csvfile; } private void setCsvFilename(String s) { this.csvfile = s; } private void usage() { System.err.println("Usage: java ReadCsv <csv file>"); } // constructor ReadCsv(String[] args) { // check args if (args.length != 1) { usage(); System.exit(1); } // check file if (!(new File(args[0])).exists()) { System.err.println(args[0] + ": file not found."); System.exit(2); } // set csv filename setCsvFilename(args[0]); } // read csvfile private List<String[]> readCsvfile2Array() { String csv = this.getCsvFilename(); List<String[]> csvList = new ArrayList<String[]>(); try (BufferedReader br = new BufferedReader( new InputStreamReader( new FileInputStream(csv), System.getProperty("file.encoding")))) { String l = br.readLine(); while (l != null) { csvList.add(l.split(",")); l = br.readLine(); } } catch (FileNotFoundException e) { System.err.println(csv + " not found."); } catch (IOException e) { System.err.println("I/O error."); } catch (Exception e) { e.printStackTrace(); } return csvList; } // main public static void main(String[] args) { ReadCsv me = new ReadCsv(args); List<String[]> csvList = me.readCsvfile2Array(); // display csvList if (csvList != null) { System.out.printf("%d line\n", csvList.size()); for (String[] s : csvList) { String l ="|"; for (int i = 0; s.length > i; i++) { l += String.format("%10s|", s[i]); } System.out.println(l); } } } } * 実行結果 [#a6628b91] 上記のサンプルソースをコンパイルして実行してみます。~ 使用したCSVファイルは以下の通りです。 &ref(data.csv); UTF-8, LF Java,Ruby,Python,Perl,PHP 10,20,30,40,50 あ,い,う,え,お + コンパイルします。 $ javac ReadCsv.java #br +実行します。 $ java ReadCsv data.csv 3 line | Java| Ruby| Python| Perl| PHP| | 10| 20| 30| 40| 50| | あ| い| う| え| お| ちなみに引数なし、引数に指定したファイルがない場合は以下のような出力となります。 $ java ReadCsv Usage: java ReadCsv <csv file> $ java ReadCsv foo.csv foo.csv: file not found. 以上、JavaでCSVファイルを読み込み、加工しやすい?ListにString[]で格納するサンプルソースでした。
テキスト整形のルールを表示する
添付ファイル:
data.csv
404件
[
詳細
]
ReadCsv.java
426件
[
詳細
]