如何在Java中将 .csv 文件读入 ArrayList?

9
我是一位能够翻译文本的助手。
我有一个大学作业需要从一个.csv文件中读取数据,并使用三种不同的方法进行处理和输出。指令要求我将数据读入到一个数组列表中,我已经编写了一些代码,但是我不确定是否正确。请问有人可以帮我理解如何将文件读入到数组列表中吗?
我的代码:
public void readData() throws IOException { 
    int count = 0;
    String file = "bank-Detail.txt";
    try {
        BufferedReader br = new BufferedReader(new FileReader(file));
        String line = "";
        while ((line = br.readLine()) != null) {

            bank.add(line.split(","));

            String[][] v = (String[][]) bank.toArray(new String[bank.size()][12]);

        }
    } catch (FileNotFoundException e) {

    }
}

您正在阅读的文件是否有固定模式? - Atom
@Kot 这个文件大约有600行,每行包含12个逗号分隔的部分。 - abe
你应该注意到字符串数组和ArrayList不是同一种东西。如果指令要求使用ArrayList,那么你应该研究一下这个类。 - Alex
你需要正确处理引号吗?在CSV中,这些可以用于围绕字段,并且如果字段包含逗号,则需要使用它们。 - Dawood ibn Kareem
1个回答

11

您不需要使用 2D 数组来存储文件内容,一个 String[] 数组的列表就可以了,例如:

public List<String[]> readData() throws IOException { 
    int count = 0;
    String file = "bank-Detail.txt";
    List<String[]> content = new ArrayList<>();
    try(BufferedReader br = new BufferedReader(new FileReader(file))) {
        String line = "";
        while ((line = br.readLine()) != null) {
            content.add(line.split(","));
        }
    } catch (FileNotFoundException e) {
      //Some error logging
    }
    return content;
}

此外,最好的做法是在方法中声明本地list并从中返回,而不是像您的情况一样将元素添加到共享list('bank')中。

不错,但更酷的是将分隔符作为参数,因为对于CSV来说,它并不总是逗号。 - Ali Ben Zarrouk

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接