Java में CSV के साथ कार्य: OpenCSV और Apache Commons CSV
CSV (Comma-Separated Values) — सारणीबद्ध डेटा को संग्रहीत और आदान-प्रदान करने के लिए सबसे सामान्य प्रारूपों में से एक है। Java में CSV के साथ सुविधाजनक रूप से कार्य करने के लिए कोई अंतर्निहित लाइब्रेरी नहीं है (केवल BufferedReader के माध्यम से मैन्युअल पार्सिंग), इसलिए डेवलपर्स तृतीय-पक्ष टूल का उपयोग करते हैं। इस लेख में, हम दो लोकप्रिय लाइब्रेरीज़: OpenCSV और Apache Commons CSV पर विचार करेंगे। आप कोड उदाहरणों के साथ CSV फ़ाइलों को पढ़ना, लिखना और प्रसंस्करण करना सीखेंगे।
1. OpenCSV: हल्का पार्सिंग और एनोटेशन
OpenCSV — CSV के साथ कार्य करने के लिए एक सरल और कुशल लाइब्रेरी है। यह पंक्ति-दर-पंक्ति पढ़ने, Java ऑब्जेक्ट्स पर मैपिंग (@CsvBindByName एनोटेशन के माध्यम से), और डेटा लिखने का समर्थन करती है।
कनेक्शन (Maven)
<dependency> <groupId>com.opencsv</groupId> <artifactId>opencsv</artifactId> <version>5.9</version></dependency>CSV को स्ट्रिंग्स की सूची में पढ़ना
import com.opencsv.CSVReader;import java.io.FileReader;import java.util.List;
public class OpenCsvExample { public static void main(String[] args) throws Exception { try (CSVReader reader = new CSVReader(new FileReader("data.csv"))) { List<String[]> rows = reader.readAll(); for (String[] row : rows) { System.out.println(String.join(" | ", row)); } } }}Java ऑब्जेक्ट पर मैपिंग
import com.opencsv.bean.CsvBindByName;import com.opencsv.bean.CsvToBean;import com.opencsv.bean.CsvToBeanBuilder;import java.io.FileReader;import java.util.List;
public class User { @CsvBindByName(column = "name") private String name;
@CsvBindByName(column = "email") private String email;
// गेटर्स और सेटर्स}
// पढ़नाtry (FileReader reader = new FileReader("users.csv")) { CsvToBean<User> csvToBean = new CsvToBeanBuilder<User>(reader) .withType(User.class) .withIgnoreLeadingWhiteSpace(true) .build(); List<User> users = csvToBean.parse(); users.forEach(u -> System.out.println(u.getName() + " - " + u.getEmail()));}CSV लिखना
import com.opencsv.CSVWriter;import java.io.FileWriter;
try (CSVWriter writer = new CSVWriter(new FileWriter("output.csv"))) { String[] header = {"Name", "Age", "City"}; writer.writeNext(header); writer.writeNext(new String[]{"Alice", "30", "Moscow"}); writer.writeNext(new String[]{"Bob", "25", "SPb"});}2. Apache Commons CSV: लचीलापन और प्रदर्शन
Apache Commons CSV — Apache Commons पारिस्थितिकी तंत्र का हिस्सा है। यह उच्च प्रदर्शन, विभिन्न प्रारूपों (CSV, TSV, Excel) के समर्थन और अनुकूलन योग्य विभाजकों द्वारा प्रतिष्ठित है।
कनेक्शन (Maven)
<dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-csv</artifactId> <version>1.11.0</version></dependency>हेडर के साथ CSV पढ़ना
import org.apache.commons.csv.CSVFormat;import org.apache.commons.csv.CSVParser;import org.apache.commons.csv.CSVRecord;import java.io.FileReader;import java.io.Reader;
try (Reader in = new FileReader("data.csv"); CSVParser parser = CSVFormat.DEFAULT .withFirstRecordAsHeader() .parse(in)) { for (CSVRecord record : parser) { String name = record.get("name"); String email = record.get("email"); System.out.println(name + " : " + email); }}कस्टम विभाजक के साथ CSV लिखना
import org.apache.commons.csv.CSVFormat;import org.apache.commons.csv.CSVPrinter;import java.io.FileWriter;import