1

我有一个 CSV 文件,我正在使用 CSVReader 库读取该文件。

我想逐行遍历文件并将特定列中的值保存到新数组中。

以下代码为我提供了第二列的数据列表。

我如何获取这些数据并将其保存到数组中?我将列分隔符指定为逗号并跳过文件的前两行

public class ReadFile {


        // Location of file to read

    private static final String FILE="myfile.csv"; 

    public static void main(String[] args) throws IOException {

        CSVReader reader = new CSVReader(new FileReader(FILE), ',','\'', 2);

            String [] nextLine;
        while ((nextLine = reader.readNext()) != null) {

                   System.out.println(nextLine[1]);
        }
           }
    }

nextLine[1] 的当前输出

1720178147618
1720178147617
1720178147616
1720178147615
1720178147614
1720178147613
1720178147612

期望的输出

String[] ID = 1720178147618, 1720178147617, 1720178147616, 1720178147615, 1720178147614, 1720178147613, 1720178147612

我认为我之后是关于如何将存储在单个索引中的数据转换为新的单独索引数组的说明。

4

3 回答 3

0

假设您正在使用CSVReaderOpen CSV library中的 ,文档显示有一种方法readAll()可以完全按照您的要求进行操作:

List<String[]> values = reader.readAll();

于 2013-03-24T15:13:51.737 回答
0

鉴于其他答案,我不确定这是否是您正在寻找的东西。我理解它是因为您想要一个仅包含第二列数据的数组?

这是我所拥有的:

    List<String> strings = new ArrayList<>();
    while...{
        strings.add( nextLine[1] );
    }
    String[] ID = strings.toArray(new String[strings.size()]);

不过,您也可以使用 chrisn 的答案,然后执行以下操作:

String[] ID = values.get(1);
于 2013-03-24T15:19:07.260 回答
0

您需要将内容添加到List- 这是一个可扩展的集合结构,

final List<String> list = new LinkedList<String>();

在你的代码中

while ((nextLine = reader.readNext()) != null) {
    list.add(nextLine[1]);
}

然后,如果你想要一个String[]你可以调用该toArray方法

final String[] array = list.toArray(new String[list.size()]);

但你也可以只使用List.

于 2013-03-24T15:21:14.380 回答