在java中读取和使用csv文件中的数据

在java中读取和使用csv文件中的数据,java,csv,Java,Csv,我需要一个CSV文件,并找到每行和每列的平均值。共有922行和11列。到目前为止,我已经能够将这些值打印到控制台上,但是它们并没有被行和列分隔,只有一个值,然后是一个新行。到目前为止,我已经: public static void main(String[] args) { String fileName = "eeg.csv"; File file = new File(fileName); try { Scanner inputStream = n

我需要一个CSV文件,并找到每行和每列的平均值。共有922行和11列。到目前为止,我已经能够将这些值打印到控制台上,但是它们并没有被行和列分隔,只有一个值,然后是一个新行。到目前为止,我已经:

public static void main(String[] args) {

    String fileName = "eeg.csv";
    File file = new File(fileName);

    try {
        Scanner inputStream = new Scanner(file);
        while (inputStream.hasNext()){
            String data = inputStream.next();
            System.out.println(data);
        }
        inputStream.close();

    } catch (FileNotFoundException e) {
        e.printStackTrace();
    }

}

}

如果您能帮助我将这些值重新排序为行和列,并就如何按行和列查找平均值提供建议,我将不胜感激。谢谢。

对于大多数使用CSV的情况,只需先按行或行组(读取和)解析文件,即可获得行;然后按分隔符模式分割每一行,对于CSV,分隔符模式为
\s*,\s*
,以获得每一行的列

遍历行和列以找到之后的平均值应该很简单


更高级的情况,如
“引号块”
,可以包含分隔符
、新行,甚至其他引号值(通常作为双引号处理
,以便解析器能够了解差异),可以更好地使用
模式
匹配器
,或其他解析技术。

使用ApachePOI库

public int getPhysicalNumberOfRows();
public int getFirstRowNum();
public int getLastRowNum();

使用为该任务设计的库,比如openCSVI投票给ApachePOI@TheLimaopenCSV有那么大(与ApacheAPI相比),CSV比用逗号分隔的值更复杂,因此无需重新发明轮子。我认为任何开发人员都能掌握的最好的技能之一就是知道第三方库什么时候能解决问题,什么时候花时间开发自己的库才是更好的解决方案。所有手工解析都可以在一两行简单的代码中完成,只需说出@TheLima的可能副本,如果列数据包含
?这就是我建议使用专用库的原因,解析CVS看起来很简单,但很快就会变得一团糟。我希望您不要建议人们也手动解析HTML和XML:P