比如我輸入CSV文件包含:如何讀取CSV文件中的列的值,而無需使用通用的Apache遍歷的Java行
A B C D E
10 ab a1 b1 ab1
20 cd c1 d1 cd1
30 ef e1 f1 ef1
40 gh c1 h1 gh1
我的輸出:
A
10
20
30
40
我能通過遍歷每一行來完成。但我不想那樣。我在我的csv中有數十萬條記錄,所以我希望一次列出A的所有列值。我只想使用apache常用的csv。
比如我輸入CSV文件包含:如何讀取CSV文件中的列的值,而無需使用通用的Apache遍歷的Java行
A B C D E
10 ab a1 b1 ab1
20 cd c1 d1 cd1
30 ef e1 f1 ef1
40 gh c1 h1 gh1
我的輸出:
A
10
20
30
40
我能通過遍歷每一行來完成。但我不想那樣。我在我的csv中有數十萬條記錄,所以我希望一次列出A的所有列值。我只想使用apache常用的csv。
沒有辦法只能存在於一個這樣或那樣的閱讀整行讀取一個CSV文件的第一列。這是一個沒有固定記錄大小的文本文件。
對於字節的每個記錄具有固定尺寸的二進制文件,這將是可能的例如與RandomAccessFile
。但隨着一個文本文件,你必須始終以搜索行的末尾找到下一行的開始,下一個字段列A
但我不認爲這是一個很大的問題,當你讀線按行,不要在內存中保存不需要的列值。
通常情況下,我們得到CSVRecord當我們閱讀該.csv文件。你可以使用下面的代碼來獲得第一列。但是,Apache CSV將在內部解析所有列並將其作爲CSVRecord返回。
Reader in = new FileReader("input1.csv");
Iterable<CSVRecord> records = CSVFormat.EXCEL.parse(in);
for (CSVRecord record : records) {
System.out.println(record.get(0));
}
簡短回答:否 長答案:流文件(Apache IO示例http://www.baeldung.com/java-read-lines-large-file) – cmaynard