在java中使用缓冲读取器读取行时获取备用列名?
我使用此代码读取csv中的一行并获取列名,但问题是我获取的是备用的cloumn名称。它跳过第一列读取第二列,然后跳过第三列并读取第四列在java中使用缓冲读取器读取行时获取备用列名?,java,csv,bufferedreader,Java,Csv,Bufferedreader,我使用此代码读取csv中的一行并获取列名,但问题是我获取的是备用的cloumn名称。它跳过第一列读取第二列,然后跳过第三列并读取第四列 BufferedReader br = new BufferedReader(new FileReader(csvFile)); String line = ""; StringTokenizer st = null; int lineNumber = 0;
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() + " ");
}
您在while循环中调用了两次st.nextToken()。每次,它都会抓取下一个元素
您可能想用line.split(“,”)替换StringTokenizer,除非您有特殊的需要使用它(例如性能)。正如javadocs for
StringTokenizer
中所述,您真的不应该在现代(新)代码中使用它<代码>字符串[]数组=line.split(“,”)代码>