使用JAVA从CSV文件读取列
您好,我正在尝试读取JAVA中名为test.csv
的CSV文件。
下面是我的代码:
import java.io.BufferedReader;
import java.io.FileReader;
public class InsertValuesIntoTestDb {
@SuppressWarnings("rawtypes")
public static void main(String[] args) throws Exception {
String splitBy = ",";
BufferedReader br = new BufferedReader(new FileReader("test.csv"));
String line = br.readLine();
while(line!=null){
String[] b = line.split(splitBy);
System.out.println(b[0]);
}
br.close();
}
}
这是我的CSV文件(test.CSV):
a,f,w,b,numinst,af,ub
1RW,800,64,22,1,48:2,true
1RW,800,16,39,1,48:2,true
1RW,800,640,330,1,48:2,true
1RW,800,40,124,1,48:2,true
1RW,800,32,104,1,48:2,true
1RW,800,8,104,1,48:2,true
1R1W,800,65536,39,1,96:96,true
1R1W,800,2048,39,1,96:96,true
1R1W,800,8192,39,1,48:48,true
我正试图打印csv中的第一列,但我得到的输出只是无限循环中的a
。谁能帮我修改一下这个代码来打印整个第一列。谢谢
# 1 楼答案
如果您正在使用Java 7+,您可能希望使用NIO.2,例如:
❍ 代码:
❍ 输出:
# 2 楼答案
您没有更改line的值。应该是这样的
readLine返回每一行,只有在没有剩余内容时才返回null。上面的代码设置行,然后检查它是否为空
# 3 楼答案
用逗号分割并不是一直有效的,例如,如果你有csv文件,比如
因此,我建议使用Apache Commons CSVAPI:
# 4 楼答案
在循环中连续读取输入,以便为变量
line
分配除初始值以外的值旁白:这个问题已经用CSV库解决了,比如OpenCSV。以下是reading and writingCSV文件的示例