CSVファイルを配列に読み込む
1. 概要
簡単に言えば、CSV(コンマ区切り値)ファイルには、コンマ区切り文字で区切られた整理された情報が含まれています。
このチュートリアルでは、CSVファイルを配列に読み込むさまざまな方法を検討します。
2. java.ioのBufferedReader
まず、BufferedReaderのreadLine()を使用して、レコードを1行ずつ読み取ります。 次に、カンマ区切り文字に基づいて行をトークンに分割します。
List> records = new ArrayList<>();
try (BufferedReader br = new BufferedReader(new FileReader("book.csv"))) {
String line;
while ((line = br.readLine()) != null) {
String[] values = line.split(COMMA_DELIMITER);
records.add(Arrays.asList(values));
}
}
このアプローチでは、より洗練されたCSV(例: 値としてコンマを引用または含める)は、意図したとおりに解析されません。
3. java.utilのScanner
次に、java.util.Scannerを使用してファイルの内容を実行し、行を1つずつ順番に取得します。
List> records = new ArrayList<>();
try (Scanner scanner = new Scanner(new File("book.csv"));) {
while (scanner.hasNextLine()) {
records.add(getRecordFromLine(scanner.nextLine()));
}
}
次に、行を解析して配列に保存します。
private List getRecordFromLine(String line) {
List values = new ArrayList();
try (Scanner rowScanner = new Scanner(line)) {
rowScanner.useDelimiter(COMMA_DELIMITER);
while (rowScanner.hasNext()) {
values.add(rowScanner.next());
}
}
return values;
}
以前と同様に、このアプローチでは、より高度なCSVは意図したとおりに解析されません。
4. OpenCSV
OpenCSVを使用して、より複雑なCSVファイルに対処できます。
OpenCSV is a third party library which provides an API to work with CSV files.CSVReaderでreadNext()メソッドを使用して、ファイル内のレコードを読み取ります。
List> records = new ArrayList>();
try (CSVReader csvReader = new CSVReader(new FileReader("book.csv"));) {
String[] values = null;
while ((values = csvReader.readNext()) != null) {
records.add(Arrays.asList(values));
}
}
OpenCSVについてさらに深く掘り下げて学ぶために、OpenCSV tutorialを確認できます。
5. 結論
このクイックチュートリアルでは、CSVファイルを配列に読み込むさまざまな方法を検討しました。
いつものように、例の完全なソースコードはover on GitHubで入手できます。