CSV取込みサンプルを作ってみた †CSVファイルを1行ずつ読み込み、Stringのsplitで分割し、ArrayListに格納するサンプルを以下に記します。 関連記事 †注意事項 †本サンプルソースは、ファイルの読み込み部分をtry-with-resourcesで記述していますので、Java7以降でコンパイルおよび実行してください。 CSV取込みサンプルソース †本サンプルソースは、引数で渡されたファイルの有無を調べます。 引数に指定されたファイルを開き、カンマ(,)でsplitしたStringの配列(String[])をArrayListに追加しています。 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); } } } } 実行結果 †上記のサンプルソースをコンパイルして実行してみます。 data.csv UTF-8, LF 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[]で格納するサンプルソースでした。 |