我想使用以下代码从 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/