在 Java 中读取 csv 文件时如何跳过空白单元格?
How to skip blank cells when reading a csv file in Java?
正在尝试创建一个 csv 文件 reader,但是 reader 在遇到行尾空白时出现 ArrayIndexOutOfBoundsException。
示例:姓名、电子邮件、年龄、城市
- John, johnsmith@email, 23, New York - 这有效而且是标准的
- John, johnsmith@email, 23, - 这失败了
- ,23,纽约 - 这有效
- John, johnsmith@email, - 这失败了
也欢迎任何其他反馈!
这是代码。
public class Main {
static String filepath = "filepath.csv";
public static void main(String[] args) {
SQLiteDB db = new SQLiteDB();
CSVReader(filepath);
}
public static void CSVReader(String filepath) {
List<User> users = new ArrayList<User>();
BufferedReader br = null;
String line;
int count = 1;
try {
br = new BufferedReader(new FileReader(filepath));
while ((line = br.readLine()) != null) {
if(line.trim().length() > 0) {
User user = new User();
String[] userinfo = line.split(",(?=([^\"]|\"[^\"]*\")*$)");
user.firstName = userinfo[0];
user.lastName = userinfo[1];
user.email = userinfo[2];
user.gender = userinfo[3];
user.image = userinfo[4];
user.bank = userinfo[5];
user.transaction = userinfo[6];
user.bool1 = userinfo[7];
user.bool2 = userinfo[8];
user.city = userinfo[9];
users.add(user);
System.out.println("Count:" + count + " " + user.getBool2());
count++;
}
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (ArrayIndexOutOfBoundsException e) {
e.printStackTrace();
}
}
}
city值,赋值前用三元运算符检查数组长度即可:
user.city = userinfo.length == 10 ? userinfo[9] : "";
如果这不是作业项目,为什么不使用图书馆? GitHub 上有几个,这里是一个看起来很容易使用的 - https://github.com/osiegmar/FastCSV。
正在尝试创建一个 csv 文件 reader,但是 reader 在遇到行尾空白时出现 ArrayIndexOutOfBoundsException。
示例:姓名、电子邮件、年龄、城市
- John, johnsmith@email, 23, New York - 这有效而且是标准的
- John, johnsmith@email, 23, - 这失败了
- ,23,纽约 - 这有效
- John, johnsmith@email, - 这失败了
也欢迎任何其他反馈!
这是代码。
public class Main {
static String filepath = "filepath.csv";
public static void main(String[] args) {
SQLiteDB db = new SQLiteDB();
CSVReader(filepath);
}
public static void CSVReader(String filepath) {
List<User> users = new ArrayList<User>();
BufferedReader br = null;
String line;
int count = 1;
try {
br = new BufferedReader(new FileReader(filepath));
while ((line = br.readLine()) != null) {
if(line.trim().length() > 0) {
User user = new User();
String[] userinfo = line.split(",(?=([^\"]|\"[^\"]*\")*$)");
user.firstName = userinfo[0];
user.lastName = userinfo[1];
user.email = userinfo[2];
user.gender = userinfo[3];
user.image = userinfo[4];
user.bank = userinfo[5];
user.transaction = userinfo[6];
user.bool1 = userinfo[7];
user.bool2 = userinfo[8];
user.city = userinfo[9];
users.add(user);
System.out.println("Count:" + count + " " + user.getBool2());
count++;
}
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (ArrayIndexOutOfBoundsException e) {
e.printStackTrace();
}
}
}
city值,赋值前用三元运算符检查数组长度即可:
user.city = userinfo.length == 10 ? userinfo[9] : "";
如果这不是作业项目,为什么不使用图书馆? GitHub 上有几个,这里是一个看起来很容易使用的 - https://github.com/osiegmar/FastCSV。