CSV が期待通りにパースされなかったり、かゆいところに手が届く機能が欲しいなど、
他の CSV ライブラリから OrangeSignal CSV へ移行する場合のコード例を記載します。
他の CSV ライブラリとの機能比較については CSV Library Features Matrix をご覧ください。
行単位の読込み
// opencsv CSVReader reader = new CSVReader(new FileReader("yourfile.csv")); String [] nextLine; while ((nextLine = reader.readNext()) != null) { System.out.println(nextLine[0] + nextLine[1] + "etc..."); } // OrangeSignal CSV CsvReader reader = new CsvReader(new FileReader("yourfile.csv")); List<String> values; while ((values = reader.readValues()) != null) { String [] nextLine = values.toArray(new String[0]); System.out.println(nextLine[0] + nextLine[1] + "etc..."); } ※OrangeSignal CSV の CsvReader では物理行番号および論理行番号をサポートしています。 また CSV トークン単位での物理行番号もサポートしています。
一括読込み
// opencsv CSVReader reader = new CSVReader(new FileReader("yourfile.csv")); List myEntries = reader.readAll(); // OrangeSignal CSV List<String[]> myEntries = Csv.load(new FileReader("yourfile.csv"), new CsvConfig(), new StringArrayListHandler()); ※OrangeSignal CSV では、CsvConfig やハンドラを設定することで多様な形式・種類の CSV に対応可能となります。
CSV 形式指定
// opencsv CSVReader reader = new CSVReader(new FileReader("yourfile.csv"), '\t'); // OrangeSignal CSV CsvReader reader = new CsvReader(new FileReader("yourfile.csv"), new CsvConfig('\t')); ※CsvConfig により非常に細かい CSV 形式の設定が可能となります。
行単位の書込み
// opencsv CSVWriter writer = new CSVWriter(new FileWriter("yourfile.csv"), '\t'); String[] entries = "first#second#third".split("#"); writer.writeNext(entries); writer.close(); // OrangeSignal CSV CsvWriter writer = new CsvWriter(new FileWriter("yourfile.csv"), new CsvConfig('\t')); String[] entries = "first#second#third".split("#"); writer. writeValues(Arrays.asList(entries)); writer.close();
一括書込み
// opencsv java.sql.ResultSet myResultSet = .... writer.writeAll(myResultSet, includeHeaders); // OrangeSignal CSV java.sql.ResultSet myResultSet = .... Csv.save(myResultSet, writer, new CsvConfig(), new ResultSetHandler());
POJO アクセス
// opencsv ColumnPositionMappingStrategy strat = new ColumnPositionMappingStrategy(); strat.setType(YourOrderBean.class); String[] columns = new String[] {"name", "orderNumber", "id"}; // the fields to bind do in your JavaBean strat.setColumnMapping(columns); CsvToBean csv = new CsvToBean(); List list = csv.parse(strat, yourReader); // OrangeSignal CSV List<YourOrderBean> list = new CsvColumnPositionMappingBeanManager() .load(YourOrderBean.class) .column("name") .column("orderNumber") .column("id") .from(yourReader); ※OrangeSignal CSV では、filter、offset、limit、order なども可能となります。また、POJO から CSV への出力も可能となります。
// opencsv <dependency> <groupId>net.sf.opencsv</groupId> <artifactId>opencsv</artifactId> <version>2.0</version> </dependency> // OrangeSignal CSV <dependency> <groupId>com.orangesignal</groupId> <artifactId>orangesignal-csv</artifactId> <version>2.2.2-SNAPSHOT</version> </dependency>