大家好我有一个像这样的CSV文件:
ban;frst_name;last_nam;adrs_provnc;accnt_type_id....
ban1;frst_name1;last_nam1;adrs_provnc1;accnt_type_id....
....
我想把这个文件放到一个数据类型中,我可以在其中访问每一行以及每行的每个字段。示例:如果我想要文件的第二行,那么我应该 -
"ban1;frst_name1;last_nam1;adrs_provnc1;accnt_type_id...."
如果我想要第二行的第二个字段,我应该:
"frst_name1"
有没有办法可以做到这一点,通过这种方式,我可以访问线路和字段。
这是我编码的
public class cvsreader {
List<List<String>> cust_data = new ArrayList<List<String>>(); // declared a list of list
public void run() throws IOException {
String cust_line = "";
String delimeter = ";";
String cust_inputfile = "C:/input.csv"; // input file
BufferedReader cust_br = new BufferedReader(new FileReader(cust_inputfile));
while ((cust_line = cust_br.readLine()) != null){
cust_data = Arrays.asList(Arrays.asList(cust_line.split(delimeter))); // stored data from cust_line(string) to cust_data (list of list, so did type casting from list to array)
System.out.println(cust_data);
}
}
}
它给我输出如下
[[ban,frst_name,last_nam,adrs_provnc,accnt_type_id....]]
[[ban1,frst_name1,last_nam1,adrs_provnc1,accnt_type_id....]]
[[.... ]]
现在如果我打印
System.out.println(cust_data.get(0));
它给出了像这样的输出 -
[ban,frst_name,last_nam,adrs_provnc,accnt_type_id....]
[ban1,frst_name1,last_nam1,adrs_provnc1,accnt_type_id....]
[.... ]
一个sqaure大括号已减少,但它应该只给出第一行。
[ban,frst_name,last_nam,adrs_provnc,accnt_type_id....]
现在如果我打印
System.out.println(cust_data.get(0).get(0));
打印下面的
ban
ban1
没有方括号,但它应该只打印第一行的第一个字段,即 - 禁令。
如果有人现在可以了解实际需要做些什么来获得所需结果,请建议。
答案 0 :(得分:0)
这个逐行阅读的答案: How to read a large text file line by line using Java?
try (BufferedReader br = new BufferedReader(new FileReader(file))) {
String line;
while ((line = br.readLine()) != null) {
// process the line.
}
}
这个分裂字符串的答案:How to split a string in Java
String string = "004-034556";
String[] parts = string.split("-");
String part1 = parts[0]; // 004
String part2 = parts[1]; // 034556
此页面提供了解析CSV的完整示例:http://www.mkyong.com/java/how-to-read-and-parse-csv-file-in-java/
从其他SO线程粘贴的所有代码副本。