2012-11-27 18 views
11

這裏是行我使用目前跳到第一線使用打開CSV讀者

File booleanTopicFile; 
// booleanTopicFile is csv file uploaded from form 
CSVReader csvReader = new CSVReader(new InputStreamReader(new FileInputStream(booleanTopicFile), "UTF-8")); 

想跳過包含標題的CSV文件的第一行。 我不想使用除默認構造函數中已有的默認逗號(,)之外的任何分隔符。 在參數化構造函數中,有一個選項可以跳過no。行,但如何處理構造函數的第二和第三參數。

CSVReader csvReader = new CSVReader(new InputStreamReader(Reader reader, char c, char c1, int index); 

- 感謝

+3

你爲什麼不只是讀的第一行,什麼也不做呢? – svz

+1

csvReader.readNext();在循環之前,是一種替代解決方案,但如果可能的話,通過構造函數將是最優的。 –

回答

26

讀取文件CSVReader類的這個構造將跳過CSV的第一行。

CSVReader reader = new CSVReader(new FileReader(file), ',', '\'', 1); 
+5

+1正確的答案,但大多數CSV文件不使用雙引號?所以它會是'新的CSVReader(新的StringReader(csvText),CSVReader.DEFAULT_SEPARATOR,CSVReader.DEFAULT_QUOTE_CHARACTER,1);'而不是。 –

+2

在版本2.3中,* DEFAULT_SEPARATOR *和* DEFAULT_QUOTE_CHARACTER *現在在* CSVParser *類中。 – nyxz

12

我覺得這個問題和答案有幫助,我想擴大在Christophe Roussy's comment。在最新opencsv(2.3截至發稿時)的實際代碼行是:

new CSVReader(new StringReader(csvText), CSVParser.DEFAULT_SEPARATOR, 
       CSVParser.DEFAULT_QUOTE_CHARACTER, 1); 

注意它使用的不是CSVReader CSVParser。

+0

非常有幫助。當我看到你的答案時,我正在尋找一種方法來爲引用參數使用空字符。 – Stephane

5

至少從版本3.8開始,您可以使用CSVReaderBuilder並將其設置爲跳過第一行。

例子:

CSVReader reader = new CSVReaderBuilder(inputStreamReader) 
       .withFieldAsNull(CSVReaderNullFieldIndicator.EMPTY_SEPARATORS) 
       // Skip the header 
       .withSkipLines(1) 
       .build();