加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

在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(正则表达式)

This method works as if by invoking the two-argument split method with the given expression and a limit argument of zero. Trailing empty strings are therefore not included in the resulting array.

所以,在你的情况下,当字符串以,结束时,空字符串不会成为结果数组的一部分.

要修复:使用此拆分变体

line.split(DELIMITER,-1);

这将包括所有尾随空字符串.所以你不会得到例外.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读