如何逐行拆分CSV文件,然后按分号

时间:2015-07-13 14:32:58

标签: java csv split filereader

大家好我有一个像这样的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  

没有方括号,但它应该只打印第一行的第一个字段,即 - 禁令。

如果有人现在可以了解实际需要做些什么来获得所需结果,请建议。

1 个答案:

答案 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线程粘贴的所有代码副本。