Java 使用I/O流解析CSV文件

Java 使用I/O流解析CSV文件,java,Java,我有美国每个县的人口数据的CSV文件。我需要从文件的第8列中获取每个人口。我使用的是fileReader()和bufferedStream(),但不确定如何使用split方法来实现这一点。我知道这不是很多信息,但我知道我将使用args[0]作为类中的目标 老实说,我不知道该去哪里 import java.io.FileReader; public class Main { public static void main(String[] args) { BufferedR

我有美国每个县的人口数据的CSV文件。我需要从文件的第8列中获取每个人口。我使用的是fileReader()和bufferedStream(),但不确定如何使用split方法来实现这一点。我知道这不是很多信息,但我知道我将使用args[0]作为类中的目标

老实说,我不知道该去哪里

import java.io.FileReader;

public class Main {

    public static void main(String[] args) {
      BufferedReader() buff = new BufferedReader(new FileReader(args[0]));
      String 
    }
    try {

    }
}

产出应该是美国总人口的整数。如果能帮我指出正确的方向,那就太好了。

不要重新发明轮子,不要自己解析CSV:使用库。即使像CSV这样的简单格式也有细微差别:字段可以用引号转义或不转义,文件可以有或没有标题,等等。此外,您还必须测试和维护您编写的代码。因此,编写更少的代码和重用库是很好的

Java中有很多用于CSV的库:

嗯,前两个是最受欢迎的

以下是Apache Commons CSV的一个示例:

final Reader in=new FileReader(“countries.csv”);
final Iterable records=CSVFormat.DEFAULT.parse(in);
对于(final CSVRecord record:records){//只需通过foreach循环对记录进行迭代即可。所有解析都由您自己处理
String populationString=record.get(7);//索引是基于零的
String populationString=record.get(“population”);//或者,如果文件有头,您可以直接使用它们
…//你想对人口做什么就做什么
}

看这是多么容易!它将与其他解析器类似。

您在这里尝试的是重新实现csv解析器。根据经验,我可以告诉你这是一条痛苦的道路。您必须处理转义引号、转义逗号、处理字符集等。请尝试使用或其他类似的库。这些LIB经过了尝试和测试,加快了开发时间。以下是一些示例代码:。这在以前已被询问过一百万次。假设已正确复制“尝试”,则不能在方法之外进行尝试。Try需要围绕可能“抛出”错误(异常)的代码块。因此,它需要在主方法内部(而不是外部)。此外,我完全同意使用库解析CSV,但我猜您的家庭作业是使用split。您是否尝试搜索“如何在java中拆分字符上的字符串”?如果是这样的话,试着在你的作业中加入这一点,当你陷入困境时,问一个后续问题。或者,如果您可以自由选择自己的方法来处理csv文件,请遵循此处的建议并使用库。同样,当你被图书馆的方法困住时,问一个后续问题。