2015-11-08 113 views
-1

我想讀取我的csv文件,但是在csv裏面我必須獨立使用逗號,csv文件讀取錯誤的列

"name1", 'U', Times.perMinute(1, 15), 'A', 1049*2.1,0,   Times.MINUTE*15, False, ['X'] 


"name2", 'U', Times.perHour(1),  'B', 1023*4, 1024*4,  Times.MINUTE*15, True, ['Y','Z'] 

我嘗試只讀第4列和第5列,但是我的輸出看起來很奇怪。我在想這個問題來自,。我該如何解決這個問題?

編輯:

,我用

public static void main(String args[]) throws Exception { 
     String splitBy = ","; 
      BufferedReader br = new BufferedReader(new FileReader("rules.csv")); 
      String line = br.readLine(); 
      while ((line = br.readLine()) != null) { 
       String[] cols = line.split(splitBy); 
       System.out.println("Uplink" + cols[4] + " ,Downlink" + cols[5]); 
      } 
      br.close(); 
+0

如果可能,生成帶有非ASCII分隔符的csv文件。在java中,你可以使用'char separator = 1;' – shanmuga

回答

2

編輯 正如我在評論中規定的代碼,

你可以使用一個不同的分隔符,比如分號,和 然後在你的代碼中,你會將splitBy改爲分號。這應該 工作,但後來它在技術上不是一個CSV文件(逗號分隔值 )

因爲當你簡單的寫Times.perMinute(1,15)代碼解析它爲2個值:

第一個是'Times.perMinute(1'

和第二'15)'


另外請閱讀RFC

  • 含有換行符(CRLF),雙引號,和逗號 字段應該被包含在雙引號。
  • +0

    你的解決方案沒有按照我的預期工作......即使我改變了我的csv文件,正如你所說 – limonik

    +0

    我很難說出爲什麼它不像你期望的那樣工作,不知道你是如何讀「Times.perHour(1)」部分和「Times.MINUTE * 15」的。我猜你是將這些部分解析爲字符串? –

    +0

    我編輯了我的問題,請檢查我的代碼 – limonik