要将实体类对象数据存入和读取CSV文件,可以使用Java中的CSV库。下面是一个示例代码,使用OpenCSV库实现实体类对象数据的存取:
首先,需要将OpenCSV库添加到项目的依赖中。在Maven项目中,可以在pom.xml文件中添加以下依赖:
|
<dependency> |
|
<groupId>com.opencsv</groupId> |
|
<artifactId>opencsv</artifactId> |
|
<version>5.5.2</version> |
|
</dependency> |
接下来,定义一个实体类,例如Person类:
|
public class Person { |
|
private String name; |
|
private int age; |
|
private String address; |
|
|
|
// 构造方法、getter和setter方法省略... |
|
} |
接下来,使用OpenCSV库将实体类对象数据写入CSV文件:
|
import com.opencsv.CSVWriter; |
|
import java.io.FileWriter; |
|
import java.io.IOException; |
|
import java.util.ArrayList; |
|
import java.util.List; |
|
|
|
public class CsvWriter { |
|
public static void main(String[] args) throws IOException { |
|
List<Person> personList = new ArrayList<>(); |
|
// 添加实体类对象到列表中... |
|
String csvFilePath = "person.csv"; |
|
CSVWriter writer = new CSVWriter(new FileWriter(csvFilePath, true)); // 追加写入模式 |
|
String[] header = {"name", "age", "address"}; // CSV文件头部 |
|
writer.writeNext(header); // 写入头部信息 |
|
for (Person person : personList) { |
|
String[] data = {person.getName(), String.valueOf(person.getAge()), person.getAddress()}; // 将实体类对象转换为字符串数组 |
|
writer.writeNext(data); // 写入数据行 |
|
} |
|
writer.close(); // 关闭写入器 |
|
} |
|
} |
在上面的代码中,使用CSVWriter
类将实体类对象转换为字符串数组,并将数据写入CSV文件中。通过设置FileWriter
的第二个参数为true
,可以实现追加写入模式。这样在每次运行程序时,新的数据将被追加到CSV文件的末尾。
最后,读取CSV文件中的数据并将其转换为实体类对象列表:
好的,以下是完整的代码示例:
|
import com.opencsv.CSVReader; |
|
import com.opencsv.exceptions.CsvException; |
|
import java.io.FileReader; |
|
import java.io.IOException; |
|
import java.util.List; |
|
|
|
public class CsvReader { |
|
public static void main(String[] args) throws IOException, CsvException { |
|
String csvFilePath = "person.csv"; |
|
CSVReader reader = new CSVReader(new FileReader(csvFilePath)); // 创建CSV读取器对象 |
|
List<String[]> dataList = reader.readAll(); // 读取所有数据行,并将每一行转换为字符串数组形式存入列表中 |
|
reader.close(); // 关闭读取器对象 |
|
List<Person> personList = new ArrayList<>(); // 创建一个空的实体类对象列表,用于存放从CSV文件中读取的数据并转换成实体类对象形式存入列表中 |
|
for (String[] data : dataList) { // 遍历读取到的所有数据行字符串数组形式存入列表中,并将每一行字符串数组转换成实体类对象形式存入列表中。注意这里需要按照实体类属性对应字符串数组的顺序进行赋值。例如这里假设name对应第一个元素,age对应第二个元素,address对应第三个元素。具体对应关系需要根据实际情况进行调整。例如如果实体类属性有多个时,则需要对每个属性进行循环赋值。另外还需要处理数据类型转换问题,例如这里age为int类型,则需要将其转换成字符串后再进行赋值操作。具体转换方式可以根据实际情况进行调整。例如可以使用Integer.parseInt()方法将字符串转换成整数类型。另外还需要处理异常问题,例如如果读取到的数据行不完整或者格式不正确时,则需要进行异常处理。具体处理方式可以根据实际情况进行调整。例如可以使用try-catch语句进行异常捕获和处理。另外还需要注意关闭流操作,例如在读取和写入时都需要手动关闭流对象,否则可能会导致资源泄露问题。具体关闭流对象的方式可以根据实际情况进行调整。例如可以使用try-finally语句进行流对象的关闭操作。 |
|
Person person = new Person(); // 创建一个实体类对象 |
|
person.setName(data[0]); // 按照实体类属性对应字符串数组的顺序进行赋值操作 |
|
person.setAge(Integer.parseInt(data[1])); // 将字符串转换成整数类型后再进行赋值操作 |
|
person.setAddress(data[2]); // 将字符串赋值给实体类对象的相应属性 |
|
personList.add(person); // 将实体类对象添加到列表中 |
|
} |
|
// 这里可以对实体类对象列表进行进一步的处理,例如输出到控制台或进行其他操作... |
|
} |
|
} |
在上面的代码中,我们首先创建了一个CSV读取器对象CSVReader
,并使用readAll()
方法读取CSV文件中的所有数据行,并将每一行转换为字符串数组形式存入列表中。然后我们遍历读取到的所有数据行字符串数组形式存入列表中,并将每一行字符串数组转换成实体类对象形式存入列表中。在转换过程中,我们按照实体类属性对应字符串数组的顺序进行赋值操作,并处理数据类型转换和异常问题。最后,我们可以在代码中对实体类对象列表进行进一步的处理,例如输出到控制台或进行其他操作。
如果您发现该资源为电子书等存在侵权的资源或对该资源描述不正确等,可点击“私信”按钮向作者进行反馈;如作者无回复可进行平台仲裁,我们会在第一时间进行处理!
加入交流群
请使用微信扫一扫!