在Java中读取csv文件时如何跳过空白单元格?
正在尝试创建csv文件读取器,但读取器遇到行尾空白时会收到ArrayIndexOutOfBoundsException 示例:姓名、电子邮件、年龄、城市在Java中读取csv文件时如何跳过空白单元格?,java,csv,filereader,Java,Csv,Filereader,正在尝试创建csv文件读取器,但读取器遇到行尾空白时会收到ArrayIndexOutOfBoundsException 示例:姓名、电子邮件、年龄、城市 约翰,johnsmith@email,23,纽约-这是标准的 约翰,johnsmith@email,23,-这失败了 23号,纽约-这很有效 约翰,johnsmith@email,,-这失败了 欢迎任何其他反馈 这是密码 public class Main { static String filepath = "fil
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();
}
}
}
公共类主{
静态字符串filepath=“filepath.csv”;
公共静态void main(字符串[]args){
SQLiteDB=newsqlitedb();
CSVReader(文件路径);
}
公共静态void CSVReader(字符串文件路径){
列表用户=新建ArrayList();
BufferedReader br=null;
弦线;
整数计数=1;
试一试{
br=新的BufferedReader(新的文件读取器(文件路径));
而((line=br.readLine())!=null){
如果(line.trim().length()>0){
用户=新用户();
字符串[]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];
用户。添加(用户);
System.out.println(“计数:“+Count+”+user.getBool2());
计数++;
}
}
}catch(filenotfounde异常){
e、 printStackTrace();
}捕获(IOE异常){
e、 printStackTrace();
}捕获(阵列索引边界外异常e){
e、 printStackTrace();
}
}
}
对于城市值,只需在赋值前使用三元运算符检查数组长度:
user.city = userinfo.length == 10 ? userinfo[9] : "";
如果这不是一个家庭作业项目,你为什么不使用图书馆呢?GitHub上有几个,这里有一个似乎很容易使用的-。所以只有
userinfo[9]
是个问题?如果找不到该值,该值应该是什么?可以尝试捕获以检测ArrayIndexOutOfBoundsException
?