2013-07-17 17 views
0

我正在使用此代码来读取csv中的一行并获取列名称,但问题是我正在获取替代的名称。它正在跳过第一列,然后跳过第三列并读取第四列。在java中使用缓冲读取器读取一行时获取备用列名称?

BufferedReader br = new BufferedReader(new FileReader(csvFile)); 
       String line = ""; 
       StringTokenizer st = null; 

       int lineNumber = 0; 
       int tokenNumber = 0; 



       //read comma separated file line by line 
       while ((line = br.readLine()) != null) { 
       lineNumber++; 

       //use comma as token separator 
       st = new StringTokenizer(line, ","); 


       while (st.hasMoreTokens()) { 
        //tokenNumber++; 
        s.add(st.nextToken()); 
        //display csv values 
        System.out.print(st.nextToken() + " "); 

       } 
+0

正如在'StringTokenizer'的javadoc中所说的,你真的不应该在现代(新)代码中使用它。 'String [] array = line.split(“,”);' –

回答

1

您正在while循环中调用st.nextToken()两次。每一次,它都会抓住下一个元素。

您可能想用line.split(“,”)替换StringTokenizer,除非您特别需要使用它(如性能)。

+0

感谢它的工作.. – Avinash