解析文件在java中没有产生预期的输出?

时间:2014-08-12 18:25:44

标签: java

我试图通过 space 解析csv文件作为分隔符然而,我的java代码只获取第一列值而不是第二列值。有人能指出我的问题吗?

CSV文件格式

DATE TIME ENV ASSIGNED 
2014-07-04 04:05:10  y0 499 
2014-07-04 05:14:09  y0 501 
2014-07-04 06:14:47  y1 505 

Java代码

String csvFile = "C:\\Tools\\parsesqldb\\his_sum.csv";
BufferedReader br = null;
String line = "";
String cvsSplitBy = " ";

try {

    br = new BufferedReader(new FileReader(csvFile));
    while ((line = br.readLine()) != null) {

            // use space as separator
        String[] data= line.split(cvsSplitBy);

        System.out.println("Date Time [date= " + data[1]  + " , time=" + data[2] + "]");

    }

}

3 个答案:

答案 0 :(得分:0)

以下是列分隔符:

2014-07-04 04:05:10  y0 499 
          ^        ^^  ^
          0        1|  3
                    2

您会注意到1到2之间的列是空的,这就是您无法获得任何内容的原因。

如果您想接受任意数量的空格作为分隔符,可以使用

String cvsSplitBy = " +";

+是"一个或多个出现"的正则表达式。这样,双空格将被视为一个分隔符。

答案 1 :(得分:0)

你应该使用这样的代码:

string.split("\\s+")

在这里,\ s +将处理任意数量的空格> = 1。

答案 2 :(得分:0)

我认为问题更简单。日期位于返回数组的第0个索引中...尝试System.out.println("Date Time [date= " + data[0] + " , time=" + data[1] + "]");