将CSV文件数据转换为List的工具类

一、导入OpenCSV的jar包
<dependency>
	<groupId>com.opencsv</groupId>
	<artifactId>opencsv</artifactId>
	<version>5.6</version>
</dependency>
二、创建csv文件解析工具类
public class CsvUtils {
    /**
     * 获取CSV文件数据
     * @param filePath csv文件所在的路径
     * @param clazz 按文件标题映射的类,属性使用注解@CsvBindByName(column = "xxx")
     * @return 返回解析后的数据集合
     * @param <T>
     */
    public static <T> List<T> getCsvData(String filePath, Class<T> clazz) {
        InputStreamReader in;
        CsvToBean<T> csvToBean;
        try {
            in = new InputStreamReader(Files.newInputStream(Paths.get(filePath)), StandardCharsets.UTF_8);
            HeaderColumnNameMappingStrategy<T> strategy = new HeaderColumnNameMappingStrategy<>();
            strategy.setType(clazz);
            csvToBean = new CsvToBeanBuilder<T>(in).withMappingStrategy(strategy).build();
        } catch (Exception e) {
            return null;
        }
        return csvToBean.parse();
    }
}
三、编写csv文件列标题的映射对象
1. csv文件示例
user name,userAge,user-sex
张三,18,男
田七,19,女
2. 映射类
/**
 * @author xxx
 * @date xxxx-xx-xx
 * @description CSV文件标题映射对象
 * 这是一个示例
 */
public class UserInfoCsvBO {

    @CsvBindByName(column = "user name")
    private String name;

    @CsvBindByName(column = "userAge")
    private String age;

    @CsvBindByName(column = "user-sex")
    private String sex;
    
}
四、使用工具类
private static final String CSV_FILE_PATH = "/home/data/csv/csv_test.csv";

/**
*获取用户信息CSV文件的数据
*/
public List<UserInfoCsvBO> getUserInfo(){
	return CsvUtils.getCsvData(CSV_FILE_PATH, UserInfoCsvBO.class);
}
Java中,将CSV数据转换Java对象可以通过以下步骤实现: 1. 导入所需的库和类:首先,你需要导入JavaCSV解析库,比如Apache Commons CSV或OpenCSV。你可以在项目的构建文件中添加相应的依赖项。 2. 创建Java对象类:根据CSV文件的结构,创建一个Java类来表示CSV中的每一行数据。该类应该包含与CSV列对应的属性,并提供相应的getter和setter方法。 3. 读取CSV文件:使用CSV解析库提供的API,打开CSV文件并读取其中的数据。你可以使用CSVReader类或类似的工具来逐行读取CSV文件。 4. 解析CSV数据并创建Java对象:对于每一行数据,将其解析为一个字符串数组或列表。然后,使用这些数据创建一个Java对象,并将CSV列的值分配给对象的属性。 5. 存储Java对象:将每个创建的Java对象存储在一个集合中,比如List或Map,以便后续处理。 下面是一个简单的示例代码,演示了如何将CSV数据转换Java对象: ```java import java.io.FileReader; import java.io.IOException; import java.util.ArrayList; import java.util.List; import com.opencsv.CSVReader; public class CSVToObjectConverter { public static void main(String[] args) { String csvFile = "data.csv"; List<Person> persons = new ArrayList<>(); try (CSVReader reader = new CSVReader(new FileReader(csvFile))) { String[] line; while ((line = reader.readNext()) != null) { // Assuming CSV columns: name, age, email String name = line[0]; int age = Integer.parseInt(line[1]); String email = line[2]; Person person = new Person(name, age, email); persons.add(person); } } catch (IOException e) { e.printStackTrace(); } // Process the list of Person objects // ... // Print the converted objects for (Person person : persons) { System.out.println(person); } } } class Person { private String name; private int age; private String email; public Person(String name, int age, String email) { this.name = name; this.age = age; this.email = email; } // Getter and setter methods @Override public String toString() { return "Person [name=" + name + ", age=" + age + ", email=" + email + "]"; } } ``` 请注意,上述示例使用了OpenCSV库来解析CSV文件。你需要将OpenCSV库添加到项目的依赖项中,以便代码能够正常运行。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值