使用JAVA从CSV文件读取列
您好,我正在尝试读取JAVA中名为使用JAVA从CSV文件读取列,java,csv,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 {
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):
我试图打印csv中的第一列,但我得到的输出只是无限循环中的
a
。谁能帮我修改一下这个代码来打印整个第一列。谢谢。在循环中连续读取输入,以便为变量行
分配一个初始值以外的值
while ((line = br.readLine()) !=null) {
...
}
旁白:这个问题已经用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"));
while((line = br.readLine()) != null){
String[] b = line.split(splitBy);
System.out.println(b[0]);
}
br.close();
}
}
readLine返回每一行,只有在没有剩余内容时才返回null。上述代码设置行,然后检查它是否为空。如果您正在使用,您可能需要使用,例如:
❍ 代码:
用逗号分割并不总是有效的,例如,如果你有csv文件,比如
"Name" , "Job" , "Address"
"Pratiyush, Singh" , "Teacher" , "Berlin, Germany"
因此,我建议使用API:
Reader in=newfilereader(“input1.csv”);
Iterable records=CSVFormat.EXCEL.parse(in);
用于(CSVRecord记录:记录){
System.out.println(record.get(0));
}
您不需要在循环中重新分配行
,因此代码会循环,直到行为空
,这将永远不会发生。这只是一个提示,希望能帮助您度过我们中一些人所经历的一些痛苦和痛苦。不要为csv编写自定义解析器和编写器。。。当然这看起来很简单,每一行都是一行,每一个逗号都是一列。这是真的,直到它不是!看看外面的图书馆。它将消除维护正确csv格式的痛苦。对于记录,它是Java,而不是Java。如果我想读取整行,该怎么做?这样就可以了。该行被读入变量line
…List lines=Files.readAllLines()
good one+1当列包含commas@cricket_007为什么?他正在和我分手comma@Sha如果您不明白仅使用任意逗号拆分不是解决方案,那么您显然从未使用过在单个列中包含数据列表的CSV。我理解问题本身只要求第一列,并且给出的示例数据本身没有额外的逗号。然而,人们来到这里是为了“用Java解析CSV”,答案是flawed@cricket_007哦,你是说一列中的逗号值吗,那么我误解了这应该是公认的答案
public static void main(String[] args) throws Exception {
File file = new File("test.csv");
List<String> lines = Files.readAllLines(file.toPath(),
StandardCharsets.UTF_8);
for (String line : lines) {
String[] array = line.split(",", -1);
System.out.println(array[0]);
}
}
a
1RW
1RW
1RW
1RW
1RW
1RW
1R1W
1R1W
1R1W
"Name" , "Job" , "Address"
"Pratiyush, Singh" , "Teacher" , "Berlin, Germany"
Reader in = new FileReader("input1.csv");
Iterable<CSVRecord> records = CSVFormat.EXCEL.parse(in);
for (CSVRecord record : records) {
System.out.println(record.get(0));
}