我尝试使用OpenCsv库读取.csv文件。现在我遇到了以下问题:
我有这个csv文件
C1;C2;C3;C4 Header
A11;A12;A13;A14 Body
A21;A22;A23;A24
A31;A32;A33;A34
...;...;...;...
...;...;...;...
现在我想从C2列中获取所有值(没有重复)。总结我想找到一种方法来做getValues(" C3"),我想得到A13,A23; a33。 openCsv可以帮帮我吗? 还有另一种方法吗?
答案 0 :(得分:0)
我想
1是id 2是价格 3是用户名....
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.StringTokenizer;
public class ReadFile {
public static void main(String[] args) {
BufferedReader br = null;
try {
String line;
br = new BufferedReader(new FileReader("c:/test.csv"));
int i=0;
while ((line = br.readLine()) != null) {
System.out.println(line);
StringTokenizer stringTokenizer = new StringTokenizer(line, ";");
if(i==0)
{
i++;
continue; // skip headers
}
while (stringTokenizer.hasMoreElements()) {
Integer id = Integer.parseInt(stringTokenizer.nextElement().toString());
Double price = Double.parseDouble(stringTokenizer.nextElement().toString());
String username = stringTokenizer.nextElement().toString();
StringBuilder sb = new StringBuilder();
sb.append("\nId : " + id);
sb.append("\nPrice : " + price);
sb.append("\nUsername : " + username);
sb.append("\n*******************\n");
System.out.println(sb.toString());
}
}
System.out.println("Done");
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (br != null)
br.close();
} catch (IOException ex) {
ex.printStackTrace();
}
}
}
}
答案 1 :(得分:0)
还有其他办法吗?
您可以在apache commons中使用CSVParser,并在每次记录的迭代过程中将值添加到set。最后,您将拥有集合中的所有唯一值。 E.g。
Set<String> uniqueValues = new HashSet<>();
File csvData = new File("/path/to/csv");
CSVParser parser = CSVParser.parse(csvData, CSVFormat.RFC4180);
for (CSVRecord csvRecord : parser) {
uniqueValues.add(csvRecord.get(2))
}