有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何按行和分号拆分CSV文件

大家好,我有一个CSV文件,如下所示:

 ban;frst_name;last_nam;adrs_provnc;accnt_type_id....
 ban1;frst_name1;last_nam1;adrs_provnc1;accnt_type_id....
 ....

我想把这个文件放到一个数据类型中,在这个数据类型中,我可以访问everyline的每一行以及每个字段。示例:如果我想要文件的第二行,那么我应该--

"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) 个答案

  1. # 1 楼答案

    以下是逐行阅读的答案: 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线程粘贴的所有代码副本