一、JavaCSV是什麼
JavaCSV是一個Java編程語言的程序庫,提供了一種簡單、快速、可靠的方式讀取和寫入CSV文件。CSV是一種通用的文件格式,用於在不同的應用程序之間傳遞數據。JavaCSV支持自定義分隔符、文本引用符等,並提供了各種API,以滿足各種讀取和寫入需求。
JavaCSV的特點包括:輕量級、穩定性高、容錯性強、易於使用。開發人員只需要簡單的配置即可快速開始使用JavaCSV進行CSV文件讀取和寫入操作。
二、JavaCSV文件的讀取
1. 環境準備
JavaCSV的讀取需要先下載jar包並導入項目,例如在maven項目中可以在pom.xml文件中添加以下依賴:
<dependency> <groupId>com.googlecode.jcsv</groupId> <artifactId>jcsv</artifactId> <version>1.4</version> </dependency>
2. CSV文件格式
CSV文件格式以逗號分隔字段,在讀取前要先確認好文件格式。JavaCSV支持讀取自定義分隔符、自定義文本引號的CSV文件。例如下面是一個以逗號分隔的CSV文件:
name,gender,age Tom,male,20 Lily,female,18 Mike,male,22
3. 創建CSVReader對象
在讀取CSV文件前,需要創建CSVReader對象,CSVReader對象是JavaCSV文件讀取的核心類,它負責將CSV文件中的內容讀取到內存中,提供了各種讀取CSV文件的方法。
例如下面的代碼就是創建一個CSVReader對象:
CSVReader<Person> csvReader = new CSVReaderBuilder<Person>(new FileReader("person.csv")) .strategy(new CsvToBeanStrategyBuilder<Person>().withType(Person.class).build()) .build();
4. CSV文件讀取
在創建好CSVReader對象後,接下來就可以開始讀取CSV文件了。JavaCSV提供了多種讀取CSV文件的方法,例如讀取整個CSV文件,讀取CSV文件的指定字段,按行讀取CSV文件等等。以下是一個按行讀取CSV文件的示例代碼:
String[] line; while ((line = csvReader.readNext()) != null) { System.out.println("Name: " + line[0] + ", Gender: " + line[1] + ", Age: " + line[2]); }
上述代碼中,readNext()方法會讀取CSV文件的下一行,返回一個字符串數組形式的行數據。將行數據解析後可以得到CSV文件中的各個字段。
三、JavaCSV文件的寫入
1. 環境準備
JavaCSV的文件寫入也需要先下載jar包並導入項目,同樣可以在pom.xml文件中添加以下依賴:
<dependency> <groupId>com.googlecode.jcsv</groupId> <artifactId>jcsv</artifactId> <version>1.4</version> </dependency>
2. CSV文件的寫入
在寫入CSV文件前,需要創建CSVWriter對象,CSVWriter對象是JavaCSV文件寫入的核心類,它負責將一個Java對象寫入到CSV文件中。
例如下面的代碼就是創建一個CSVWriter對象:
CSVWriter<Person> csvWriter = new CSVWriterBuilder<Person>(new FileWriter("person.csv")) .strategy(new BeanToCsvStrategyBuilder<Person>().build()) .build();
上述代碼中,CSVWriter負責將Person對象寫入到person.csv文件中,使用BeanToCsvStrategyBuilder指定寫入CSV文件的策略。
3. Java對象的寫入
在創建好CSVWriter對象後,接下來就可以開始將Java對象寫入CSV文件了。JavaCSV提供了兩種寫入Java對象的方式:一種是使用List,將多個Java對象一次性寫入到CSV文件中;另一種是使用Java2CSVConverter,逐個將Java對象寫入到CSV文件中。
這是一個將多個Java對象一次性寫入CSV文件的示例代碼:
List<Person> persons = new ArrayList<>(); persons.add(new Person("Tom", "male", 20)); persons.add(new Person("Lily", "female", 18)); persons.add(new Person("Mike", "male", 22)); csvWriter.writeAll(persons);
上述代碼中,createCsvWriter()方法返回一個CSVWriter實例,writeAll()方法用於將List中的全部Java對象寫入到CSV文件中。
四、JavaCSV的其他功能
1. 支持自定義分隔符
JavaCSV默認使用逗號作為CSV文件的字段分隔符,但是開發人員可以根據具體需求,自定義分隔符。例如下面的代碼將分隔符設置為豎線“|”:
CSVParser parser = new CSVParserBuilder().withSeparator('|').build(); CSVReader<Person> csvReader = new CSVReaderBuilder<Person>(new FileReader("person.csv")) .withParser(parser) .strategy(new CsvToBeanStrategyBuilder<Person>().withType(Person.class).build()) .build();
2. 支持自定義文本引用符
當CSV文件中存在文本字段包含分隔符時,需要將文本引用起來,以避免分隔符被誤認為是字段分隔符。JavaCSV默認使用雙引號作為文本引用符,但開發人員也可以根據實際需求自定義文本引用符。以下是一個自定義文本引用符的示例代碼:
CSVParser parser = new CSVParserBuilder().withQuoteChar('\'').build(); CSVReader<Person> csvReader = new CSVReaderBuilder<Person>(new FileReader("person.csv")) .withParser(parser) .strategy(new CsvToBeanStrategyBuilder<Person>().withType(Person.class).build()) .build();
3. 支持自定義字符集
JavaCSV默認使用UTF-8編碼讀取和寫入CSV文件,但開發人員也可以根據具體需求,自定義CSV文件的字符集。以下是一個自定義字符集的示例代碼:
CSVReader<Person> csvReader = new CSVReaderBuilder<Person>(new InputStreamReader(new FileInputStream(file), "GBK")) .build();
四、小結
JavaCSV是一個穩定、簡單易用的Java編程庫,提供了豐富的API,支持自定義分隔符、文本引用符、字符集等,滿足各種CSV文件讀取和寫入的需求。通過本篇文章的介紹,讀者應該對JavaCSV文件讀取的基本原理及操作有了初步的了解。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/185725.html