【发布时间】:2015-11-11 03:17:46
【问题描述】:
我正在将一个 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,99,,,99,99,99,ZZ,ZZ,,5028197242053,30,35028197242054,6,,,OPZ848,3013607800239,OPZ848,,,,50,,
文件中的大多数行都包含以下内容:50,85028197242127,8640
但在某些行中,数据丢失了,所以它的结尾是这样的:50,,
在处理文件时,这些行会导致java.lang.ArrayIndexOutOfBoundsException。
如果我知道文件中对象的数量将保持不变,我该如何最好地处理这个问题?
有人告诉我,我需要用空值替换空值。
【问题讨论】:
-
在进行拆分之前,使用 line.replace 将 '' 替换为 'null'。因为你需要用 null 替换空值。
-
@JishnuPrathap 他的意思是空值而不是“空”字符串:)
标签: java arrays csv indexoutofboundsexception