在java中解析CSV文件,并使用空值进行delaing
发布时间:2020-12-15 04:46:34 所属栏目:Java 来源:网络整理
导读:我正在将CSV文件解析到我的程序中,将值拆分为,元素,并且它工作正常,除非我有缺少值的行. 解析器的工作方式如下: import java.io.BufferedReader;import java.io.FileReader;import java.io.IOException;public class CsvReader{ private static final Strin
我正在将CSV文件解析到我的程序中,将值拆分为,元素,并且它工作正常,除非我有缺少值的行.
解析器的工作方式如下: import java.io.BufferedReader; import java.io.FileReader; import java.io.IOException; public class CsvReader { private static final String DELIMITER = ","; private final BufferedReader br; private final String path; public CsvReader(final String path) throws IOException { this.path = path; this.br = new BufferedReader(new FileReader(path)); } public String[] nextLine() throws IOException { final String line = br.readLine(); return (line == null) ? new String[0] : line.split(DELIMITER); } } 数据行看起来像这样(一行作为例子): J1024205,5028197000004,1,00,20150603,Accessories,Factory Test Article (m),ENG,010,110,5,T1,99,ZZ,5028197242053,30,35028197242054,6,OPZ848,3013607800239,50, 该文件中的大多数行都包含:50,85028197242127,8640 但在某些方面,数据缺失,所以结尾如下:50, 处理文件时,这些行会导致java.lang.ArrayIndexOutOfBoundsException. 如果我知道文件中的对象数量将保持不变,我怎么能最好地解决这个问题呢? 我被告知我需要用空值替换空值. 解决方法
来自String.split的Javadoc(正则表达式)
所以,在你的情况下,当字符串以,结束时,空字符串不会成为结果数组的一部分. 要修复:使用此拆分变体 line.split(DELIMITER,-1); 这将包括所有尾随空字符串.所以你不会得到例外. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐
热点阅读