1. Gambaran keseluruhan
Ringkasnya, fail CSV (Comma Separated Values) mengandungi maklumat teratur yang dipisahkan oleh pembatas koma.
Dalam tutorial ini, kita akan melihat pelbagai cara untuk membaca fail CSV ke dalam array.
2. BufferedReader di java.io
Pertama, kita akan membaca catatan demi baris menggunakan readLine () di BufferedReader . Kemudian kita akan membahagikan garis menjadi token berdasarkan pembatas koma.
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)); } }
Perhatikan dengan pendekatan ini, CSV yang lebih canggih (misalnya mengutip atau memasukkan koma sebagai nilai) tidak akan dihuraikan seperti yang diharapkan.
3. Pengimbas di java.util
Seterusnya, kita akan menggunakan java.util.Scanner untuk menjalankan kandungan fail dan mengambil baris secara bersiri, satu persatu:
List
records = new ArrayList(); try (Scanner scanner = new Scanner(new File("book.csv"));) { while (scanner.hasNextLine()) { records.add(getRecordFromLine(scanner.nextLine())); } }
Kemudian kita akan menguraikan garis dan menyimpannya ke dalam array:
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; }
Seperti sebelumnya, dengan pendekatan ini CSV yang lebih canggih tidak akan dihuraikan seperti yang diharapkan.
4. OpenCSV
Kami dapat menangani fail CSV yang lebih kompleks dengan OpenCSV.
OpenCSV adalah perpustakaan pihak ketiga yang menyediakan API untuk bekerja dengan fail CSV. Kami akan menggunakan kaedah readNext () dalam CSVReader untuk membaca rekod dalam fail:
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)); } }
Untuk menggali lebih mendalam dan mengetahui lebih lanjut mengenai OpenCSV - kami boleh melihat tutorial OpenCSV kami.
5. Kesimpulan
Dalam tutorial ringkas ini, kami meneroka pelbagai cara untuk membaca fail CSV ke dalam array.
Seperti biasa, kod sumber penuh contoh terdapat di GitHub.