在java中解析CSV文件,并使用空值进行delaing
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了在java中解析CSV文件,并使用空值进行delaing,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1465字,纯文字阅读大概需要3分钟。
内容图文
![在java中解析CSV文件,并使用空值进行delaing](/upload/InfoBanner/zyjiaocheng/759/93f08adbc6334cec953e52bd3d5ae690.jpg)
我正在将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.
如果我知道文件中的对象数量将保持不变,我怎么能最好地解决这个问题呢?
我被告知我需要用空值替换空值.
解决方法:
来自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);
这将包括所有尾随空字符串.所以你不会得到例外.
内容总结
以上是互联网集市为您收集整理的在java中解析CSV文件,并使用空值进行delaing全部内容,希望文章能够帮你解决在java中解析CSV文件,并使用空值进行delaing所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。