clojure
{:deps {net.cgrand/clojure-csv {:mvn/version "1.3.2"}}}
clojure
(ns my-app.core
(:require [clojure.data.csv :as csv]
[clojure.java.io :as io]))
(defn read-csv [path]
(let [csv-data (csv/read-csv (io/reader path))]
(doseq [row csv-data]
(println row))))
(read-csv "data.csv")
clojure
(ns my-app.core
(:require [clojure.data.csv :as csv]
[clojure.java.io :as io]))
(defn write-csv [data path]
(with-open [wtr (io/writer path)]
(csv/write-csv wtr data)))
(write-csv [["John" "Doe" "john@example.com"]
["Jane" "Smith" "jane@example.com"]]
"data.csv")
<dependency>
<groupId>com.opencsv</groupId>
<artifactId>opencsv</artifactId>
<version>5.5.2</version>
</dependency>
import com.opencsv.CSVReader;
import com.opencsv.CSVWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
public class Main {
public static void readCSV(String path) throws IOException {
try (CSVReader reader = new CSVReader(new FileReader(path))) {
String[] nextLine;
while ((nextLine = reader.readNext()) != null) {
for (String cell : nextLine) {
System.out.print(cell + " ");
}
System.out.println();
}
}
}
public static void writeCSV(String path, String[][] data) throws IOException {
try (CSVWriter writer = new CSVWriter(new FileWriter(path))) {
for (String[] row : data) {
writer.writeNext(row);
}
}
}
public static void main(String[] args) throws IOException {
readCSV("data.csv");
String[][] data = {
{"John", "Doe", "john@example.com"},
{"Jane", "Smith", "jane@example.com"}
};
writeCSV("data.csv", data);
}
}