2013-08-12 97 views
0

我有一個Java項目中的OpenCSV閱讀器,它爲我讀取CSV文件中的數據,但現在我硬編碼讀取它的循環中的列數。 我記得有一些方法可以獲得列數,但我不記得它是什麼以及如何使用它。OpenCSV reader for Java - 如何獲取列數?

下面是代碼:

public ArrayList<ArrayList<String>> getCSVContent(String filepath) throws Exception { 
     CSVReader reader = new CSVReader(new FileReader(FILE_PATH)); 
     ArrayList<ArrayList<String>> array = new ArrayList<ArrayList<String>>(); 
     String[] nextLine; 
     while ((nextLine = reader.readNext()) != null) { 
      ArrayList<String> list = new ArrayList<String>(); 
      for (int i = 0; i < 5; i++) { //5 is the number of columns in the file 
       list.add(nextLine[i]); 
      } 
      array.add(list); 
     } 
     reader.close(); 
     return array; 
    } 

回答

2

nextLine.length只是統計數組中的項目。

for (int i = 0; i < nextLine.length; i++) { 
    list.add(nextLine[i]); 
} 

或者使用for-each循環:

for (String col : nextLine) { 
    list.add(col); 
} 
-1

試試這個得到列數:reader.getColumnCount()

+0

我得到一個紅色的下劃線和這個錯誤方法getColumnCount()是未定義的類型CSVReader –

+0

您是否使用這個庫http://sourceforge.net/projects/javacsv/?source=directory – Prabhakaran

+1

不,我使用OpenCSV 。而不是Java CSV。 –

0

那麼一個簡單的方法是,你用掃描儀讀取的第一線的BufferedReader並計算「;」或者你用什麼來分割列。 「;」

如果使用

string.toCharArray(); 

,並++,如果它是一個整數你能指望它。

第二種方法是查看CSV閱讀器的方法。我不知道他們,但你可以在eclipse中的任何地方輸入(不知道它在NetBeans中的工作原理)「讀者」。並按下control +空格。如果你有運氣,就有一個。

+0

這是一個不好的答案。首先,您建議嘗試使用手工解決方案而不是使用庫。這很少是一個好主意,尤其是使用CSV解析。其次,你不提供實際的答案,而是建議自動完成可能有所幫助。總體而言,不是很有幫助。 –

+0

是的,我寫這個答案,因爲他沒有找到一個getColumnCount方法。我的答案是100%正確的我知道它不比圖書館好。我只是想幫助他,所以他能夠編程。 Idk你的意思是我沒有提供答案。這將是如此的工作?自動完成是我的一個提示,而不是一個解決方案。 – Gerret