读取管道分隔文件

时间:2013-11-11 06:30:40

标签: java file

我的c:中有以下名为ght.txt的文件,它包含以下数据

Id|ytr|yts
1|W|T
2|W|T
3|W|T

现在的问题是这些列的位置(Id | ytr | yts)也没有按顺序意味着它们也可以重新洗牌。对于前

Id|ytr|dgfj|fhfjk|fgrt|yts

或者他们可以像..

Id|wer|ytr|weg|yts

现在请告知我如何通过java中的缓冲编写器读取此文件以及仅捕获这些列(Id | ytr | yts)的逻辑,因为我需要先捕获这些列然后需要存储的值地图中的列。

请告知

2 个答案:

答案 0 :(得分:0)

这是提供定位信息的第一行,

String[] headers = firstLine.split("|");
int idIx, ytrIx, ytsIx, count = 0;
for(String header : headers) {
if(header.equals("Id")) {
  idIx = count;
}elseif (header.equals("ytr")) {
  ytrIx = count;
} elseif (header.equals("yts")) {
  ytsIx = count;
}
count++;
}

现在,由于您有这些索引,因此对于拆分后的每一行,请使用这些索引来检索所需的值。

注意:如果使用Java7,请在标头上使用switch-case,如果num标头更多,则您也可以使用HashMap进行标头索引映射。

答案 1 :(得分:0)

您可以使用Commons CSV并指定管道作为分隔符来加载数据,然后它允许您访问数据based on header name,以免您自己做“切换”内容。< / p>