Java中的CSV解析:如何拆分此令牌?

时间:2012-03-20 23:35:30

标签: java parsing csv

我的CSV文件中的字符串已经上传到服务器上,格式为:

21-June-2012 Football MU-Chelsea London (first row)
22-June-2012 Basketball NY-MY New York (second row)

当我使用以下代码进行CSV解析时:

BufferedInputStream bis = new BufferedInputStream(stream);
ByteArrayBuffer baf = new ByteArrayBuffer (50);int current = 0;
int current = 0;
while ((current = bis.read()) != -1){
    baf.append((byte)current);
}
String stockTxt =  new String (baf.toByteArray());  
String [] tokens = stockTxt.split(",");
String date_CSV     = tokens [2];
String time_CSV     = tokens [3];
String game_CSV     = tokens [4];
String gamedesc_CSV = tokens [5];
String venue_CSV    = tokens [6];

显示结果:

token [0] = 21-June-2012 
token [1] = Football 
token [2] = MU-Chelsea 
token [3] = London 22-June-2012 
token [4] = Basketball 
token [5] = NY-MY
token [6] = New York

对于令牌[3],我预期的reslt是伦敦,我对令牌4的预期结果是22-June-2012。我该怎么做分裂?

2 个答案:

答案 0 :(得分:0)

每一行都在各自的行上,因此您需要先逐行读取输入并将其拆分。

答案 1 :(得分:0)

由于您知道数据是“Excel CSV格式”,因此您应该搜索可以处理此格式的库。您可以免费使用几种。之后,读取文件变得非常简单,因为您不再需要关注文件格式。您的代码应该只关注readLinereadField,而不是关于处理IO内容本身。