所以我正在解析.csv文件.我在StackOverflow上的某个地方接受了另一个线程的建议并下载了SuperCSV.我终于完成了一切工作,但现在我遇到了一个似乎很难解决的错误.
出现此问题的原因可能是也可能未填充最后两列数据.下面是.csv文件的示例,第一行缺少最后一列,第二行完全完成:
2012:07:25,11:48:20,922,"uLog.exe","",按键,1246,341,-1.00,-1.00,1.00,班次2012:07:25,11:48:21,094," uLog.exe","",按下键,1246,341,-1.00,-1.00,1.00,b,Shift
根据我对Super CSV Javadoc的理解,如果存在可变数量的列,则无法使用CsvBeanReader填充Java Bean .这似乎真的很愚蠢,因为我觉得在初始化Bean时,应该允许这些缺少的列为null或其他一些默认值.
作为参考,这是我的解析器的完整代码:
public class ULogParser {
String uLogFileLocation;
String screenRecorderFileLocation;
private static final CellProcessor[] cellProcessor = new CellProcessor[] {
new ParseDate("yyyy:MM:dd"),
new ParseDate("HH:mm:ss"),
new ParseDate("SSS"),
new StrMinMax(0, 100),
new StrMinMax(0, 100),
new StrMinMax(0, 100),
new ParseInt(),
new ParseInt(),
new ParseDouble(),
new ParseDouble(),
new ParseDouble(),
new StrMinMax(0, 100),
new StrMinMax(0, 100),
};
public String[] header = {"Date", "Time", "Msec", "Application", "Window", "Message", "X", "Y", "RelDist", "TotalDist", "Rate", "Extra1", "Extra2"}; …Run Code Online (Sandbox Code Playgroud)