java - 使用 Java 读取 CSV 文件 (SE8)

标签 java csv

我想使用以下代码从 csv 文件内的数据集中提取数据:

import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;

public class ReadingCSVFiles {

public static void main(String[] args) {

    File dataFile = new File("URL\Countries.csv");
    try {
        @SuppressWarnings("resource")
        Scanner input = new Scanner(dataFile);
        input.useDelimiter(",|\\s");
        String column1 = input.next();
        String column2 = input.next();
        System.out.printf("%-11s%12s%n", column1, column2);
        while (input.hasNext()) {
            String Country = input.next();
            int Population = input.nextInt();
            System.out.printf("%-11s%, 12d%n", Country, Population);
            }

} catch (FileNotFoundException e) {
    System.out.println(e);
}
}
}

不幸的是,我只得到第一行作为输出:

Country           Population

然后我收到以下错误:

Exception in thread "main" java.util.InputMismatchException
    at java.util.Scanner.throwFor (Unknown Source)
    at ...

这是 csv.文件:

Country,Population
Argentina,41343201
Brazil,201103330
Chile,16746491
Columbia,47790000
Paraguay,6375830
Peru,29907003
Venezuela,27223228

任何帮助将不胜感激。

最佳答案

您将分隔符设置为 \s,它仅匹配一个空白字符。

如果您的文件结尾由两个字符分隔(Windows 系统上的默认设置),例如\r\n,它只会消耗第一个字符 (\r),这意味着下一个标记将是一个空字符串(读入 Country >),其后的标记将是下一个国家/地区名称,不能以 int 形式读取。

我建议逐行读取您的输入,然后使用 , 分割这些行。

关于java - 使用 Java 读取 CSV 文件 (SE8),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51789691/

相关文章:

json - 将 JSONL 文件转换为 CSV

powershell - 导出在列中找到重复值的csv行

SQLite 在文本字段中导入带逗号的 csv 文件

pandas - UnicodeDecodeError : 'utf-8' codec can't decode byte 0xcc in position 3: invalid continuation byte

Java:如何取出字符串中的一个字母,同时打印字符串中的其余字母

java - Android检测卸载和打开 Intent

java - 可以同时连接多个服务器的客户端程序

r - 将 .csv 导入 R 并出现 UTF-8 编码错误?

java - 删除重复的 JAR's-Mavenbuild

java - 无法使用spring boot连接mysql数据库错误HTTP Status 404请求的资源不可用