从CSVRecord获取数据而无法访问标题值

时间:2017-03-20 00:24:00

标签: java csv apache-commons-csv

我正在解密一个字符串以显示多个逗号分隔值,我想访问各条信息,但加密字符串不包含标题值。

我知道在阅读CSV文件时,可以使用例如:

访问特定列的信息
CSVRecord.get(ID);

其中ID是表中的标题值,但似乎没有办法在不知道标题名称的情况下访问它。

加密字符串正在另一个应用程序中解密。

有没有办法在不知道标题值的情况下读取逗号分隔值的访问权限,还是有CSVRecord的替代方法?

2 个答案:

答案 0 :(得分:0)

您可以简单地遍历结果记录并通过record.get(i)访问记录的第i项,例如

    Reader in = new StringReader(
            "DAR_123451                  ,\"XXXXX Hello World Hello World XXX \"\n" +
            "DAR_123452                  ,\"XXXXX Hello World Hello World XXX \"");
    Iterable<CSVRecord> records = CSVFormat.DEFAULT.parse(in);
    for (CSVRecord record : records) {
        for (int i = 0; i < record.size(); i++) {
            System.out.println("At " + i + ": " + record.get(i));
        }
    }

答案 1 :(得分:0)

您可以执行以下操作来访问CSVRecord的列名(键和值):

private void printRecords(final CSVParser csvRecords) {
    for (CSVRecord csvRecord : csvRecords) {
        for (Entry<String, String> column : csvRecord.toMap().entrySet()) {
            System.out.println(column.getKey() + "=" + column.getValue());
        }
    }
}

或者,您可以通过与java.util.ArrayList相同的方式遍历CSVRecord。