本文将为你介绍如果使用Java的Scanner类来读取或者解析CSV文件。
我的CSV文件(user.csv)内容如下
Rockey,22,India
Bill,23,US
Sonia,23,Germany
接下来我们首先从创建映射上述属性的实体User.java
public class User {
private String name;
private int age;
private String address;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
@Override
public String toString() {
return "User [name=" + name + ", age=" + age + ", address=" + address + "]";
}
}
如果你查看Scanner的API,你会发现该类支持文件和输入流作为输入方式,本例中我们采用文件的方式。
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class CSVParsingExample {
public static void main(String[] args) throws IOException {
Scanner scanner = new Scanner(new File("user.csv"));
Scanner valueScanner = null;
int index = 0;
List userList = new ArrayList<>();
while (scanner.hasNextLine()) {
valueScanner = new Scanner(scanner.nextLine());
valueScanner.useDelimiter(",");
User user = new User();
while (valueScanner.hasNext()) {
String data = valueScanner.next();
if (index == 0){
user.setName(data);
}
else if (index == 1){
user.setAge(Integer.parseInt(data));
}
else if (index == 2){
user.setAddress(data);
}
index++;
}
index = 0;
userList.add(user);
}
scanner.close();
System.out.println(userList);
}
}
从上面代码可以看出,Scanner的nextLine(), hasNext() 方法可以很方便的帮助我们迭代数据,转化成我们想要的格式。
输出
[User [name=Rockey, age=22, address=India], User [name=Bill, age=23, address=US], User [name=Sonia, age=23, address=Germany]]
原文地址:https://www.javatips.net/blog/read-csv-file-using-java-scanner-class