首页 > 解决方案 > 从 csv 文件 Java 中读取数据

问题描述

我想从我的数据集 train.csv 中读取数据,并且我正在尝试使用 Java 来实现它。我的目标是获取这些原始数据,以便在 csv 文件中从该数据库创建决策树。我有类 DAO,我在其中实现了一个名为 extractTrainingData 的方法,我在其中编写代码来读取数据。该方法如下。

public static BufferedReader exTractTraningData(File datafile, String ListOfCharacteristics) throws IOException {

    try {
        //create BufferedReader to read csv file
        BufferedReader reader = new BufferedReader(new FileReader(datafile));

        String strLine = "";
        StringTokenizer st = null;

        int lineNumber = 0, tokenNumber = 0;;

        String line = reader.readLine();

        while ((strLine = line) != null) {
            lineNumber++;
            //break comma separated line using ","
            st = new StringTokenizer(strLine, ",");

            while (st.hasMoreTokens()) {
                //display csv values
                tokenNumber++;
                System.out.println("Line # " + lineNumber
                        + ", Token # " + tokenNumber
                        + ", Token : " + st.nextToken()
                         + ": " + line);
            }
            //reset token number
            tokenNumber = 0;;
        }
    } catch (Exception e) {

        System.out.println("Exception while reading csv file: " + e);
    }
    return null;
}

当我运行主类时,它会反复重复该行。我真的不知道我是否做得正确。我尝试按照在线教程进行操作。谁能帮我吗?谢谢

标签: javafilefilereaderdecision-tree

解决方案


问题是您的 read 调用不在 while 循环的测试范围内。

String strLine = "";

String line = reader.readLine();

while ((strLine = line) != null) {

应该是

String strLine = "";

while ((strLine = reader.readLine()) != null) {

这样 while 循环的每次迭代都会对新的读取尝试的结果进行操作


推荐阅读