【问题标题】:Reading a pipe delimited file读取管道分隔文件
【发布时间】:2013-11-11 06:30:39
【问题描述】:

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

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

现在的问题是,此列 (Id|ytr|yts) 的位置也不是按顺序排列的,这意味着它们也可以重新洗牌..for ex

Id|ytr|dgfj|fhfjk|fgrt|yts

或者他们可以是..

Id|wer|ytr|weg|yts

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

请指教

【问题讨论】:

    标签: java file


    【解决方案1】:

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

    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,如果标头数量更多,您也可以使用HashMap 进行标头索引映射。

    【讨论】:

      【解决方案2】:

      您可以使用Commons CSV 并将管道指定为分隔符来加载数据,然后它允许您访问数据based on header name 以使您不必自己进行“切换”。

      【讨论】:

        猜你喜欢
        • 2020-08-14
        • 2018-05-16
        • 1970-01-01
        • 2019-07-01
        • 2014-12-15
        • 2020-06-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多