Cara Menulis ke File CSV di Java

1. Ikhtisar

Dalam tutorial singkat ini, kita akan belajar cara menulis ke file CSV menggunakan Java . CSV adalah singkatan dari Comma-Separated-Values ​​dan ini adalah format umum untuk melakukan transfer data massal antar sistem.

Untuk menulis file CSV kami, kami akan menggunakan kelas dalam paket java.io.

Kami akan berbicara tentang karakter khusus dan cara menanganinya. Kami akan menargetkan file keluaran kami untuk dibuka di Microsoft Excel dan Google Sheets.

Setelah contoh Java kita, kita akan melihat sekilas beberapa pustaka pihak ketiga yang tersedia untuk bekerja dengan file CSV.

2. Menulis dengan PrintWriter

Kami akan menggunakan PrintWriter untuk menulis file CSV kami. Untuk tampilan yang lebih detail dalam menggunakan java.io untuk menulis ke file, lihat artikel kami tentang menulis ke file.

2.1. Menulis CSV

Pertama, mari buat metode untuk memformat satu baris data, yang direpresentasikan sebagai larik String s:

public String convertToCSV(String[] data) { return Stream.of(data) .map(this::escapeSpecialCharacters) .collect(Collectors.joining(",")); }

Sebelum kita memanggil metode ini, selanjutnya mari kita buat beberapa contoh data:

List dataLines = new ArrayList(); dataLines.add(new String[] { "John", "Doe", "38", "Comment Data\nAnother line of comment data" }); dataLines.add(new String[] { "Jane", "Doe, Jr.", "19", "She said \"I'm being quoted\"" });

Dan dengan data itu di tangan, mari kita ubah setiap baris dengan convertToCSV dan tulis ke file:

public void givenDataArray_whenConvertToCSV_thenOutputCreated() throws IOException { File csvOutputFile = new File(CSV_FILE_NAME); try (PrintWriter pw = new PrintWriter(csvOutputFile)) { dataLines.stream() .map(this::convertToCSV) .forEach(pw::println); } assertTrue(csvOutputFile.exists()); }

2.2. Menangani Karakter Khusus

Dalam file CSV, karakter tertentu bermasalah dan sebagai pengembang, kami jarang memiliki kendali penuh atas kualitas data kami. Jadi sekarang mari kita lihat bagaimana menangani karakter khusus.

Untuk contoh kami, kami akan fokus pada koma, kutipan, dan baris baru. Kolom yang berisi koma atau tanda kutip akan dikelilingi oleh tanda kutip ganda dan tanda kutip ganda akan diberi tanda petik ganda. Kami akan menghilangkan baris baru dan menggantinya masing-masing dengan spasi.

Karakter mana yang menjadi masalah dan bagaimana mereka harus menanganinya mungkin berbeda dengan kasus penggunaan.

Metode convertToCSV kami memanggil metode escapeSpecialCharacters pada setiap bagian data saat ia membangun String.

Mari terapkan metode escapeSpecialCharacters sekarang:

public String escapeSpecialCharacters(String data) { String escapedData = data.replaceAll("\\R", " "); if (data.contains(",") || data.contains("\"") || data.contains("'")) { data = data.replace("\"", "\"\""); escapedData = "\"" + data + "\""; } return escapedData; }

3. Perpustakaan Pihak Ketiga

Seperti yang kita lihat dengan contoh kita, menulis file CSV bisa menjadi rumit ketika kita mulai memikirkan tentang karakter khusus dan cara menanganinya.

Beruntung bagi kami, ada banyak pustaka pihak ketiga yang tersedia untuk bekerja dengan file CSV dan banyak dari mereka menangani karakter khusus ini dan kasus luar biasa lainnya yang mungkin terjadi.

Mari kita lihat beberapa di antaranya:

  • Apache Commons CSV: Penawaran CSV Apache untuk bekerja dengan File CSV
  • Buka CSV: Pustaka CSV lain yang populer dan dikelola secara aktif
  • Flatpack: Perpustakaan CSV open-source yang sedang dikembangkan secara aktif
  • CSVeed: Sumber terbuka dan dipelihara secara aktif

4. Kesimpulan

Dalam artikel singkat ini, kami menunjukkan cara menulis file CSV menggunakan kelas PrintWriter Java . Selanjutnya, kami membahas dan menangani karakter khusus dalam data yang menjadi keluaran.

Setelah contoh Java biasa kami, kami melihat ikhtisar pustaka pihak ketiga yang tersedia.

Kode contoh tersedia di GitHub.