解析的CSV文件在开头显示点

解析的CSV文件在开头显示点,csv,opencsv,Csv,Opencsv,我想解析以下CSV文件: 02.01.15,Januar,GEZ,Telekommunikation,"€ 211,44",01_jährlich,Ist 02.01.15,Januar,BGV: Haftpfl. + Unfall,Versicherungen,"€ 171,95",01_jährlich,Ist 我使用以下代码进行解析: CSVReader csvReader = new CSVReader(new FileReader(file)); Stri

我想解析以下CSV文件:

02.01.15,Januar,GEZ,Telekommunikation,"€ 211,44",01_jährlich,Ist
02.01.15,Januar,BGV: Haftpfl. + Unfall,Versicherungen,"€ 171,95",01_jährlich,Ist
我使用以下代码进行解析:

  CSVReader csvReader = new CSVReader(new FileReader(file));
            String [] nextLine;
            while ((nextLine = csvReader.readNext()) != null) {
                for (String text : nextLine) {
                    System.out.print(text + " ");
                }
                System.out.println();
            }
输出在第一行的开头显示一个垂直居中的点。
问题出在哪里?

因为在while循环中检查条件时调用了
readNext()
方法。这将使用第一行而不使用它。如果你告诉我你在用什么图书馆,我可以告诉你你还能做什么。通常在Java中有一个用于此目的的
hasNext()
方法

我想您使用的是OpenCSV库,在这种情况下,您可以这样做

首先导入Arraylist库
import java.util.Arraylist

CSVReader csvReader = new CSVReader(new FileReader(file));
ArrayList<String> lines = new ArrayList<String>();
lines = csvReader.readAll();
for(String line : lines) {
    System.out.println(line + " ");
}
CSVReader CSVReader=new CSVReader(new FileReader(file));
ArrayList行=新的ArrayList();
lines=csvReader.readAll();
用于(字符串行:行){
System.out.println(行+“”);
}

PS:如果要打印同一行中的行,应使用
System.out.print(行+“”)
因为在行后添加空格然后转到新行(
println()

没有任何意义,这是由文件开头的
UTF-8签名引起的(查看数据,您的文件可能是用
UTF-8
编码的)

字节
0xEF、0xBB、0xBF
ï»
ASCII格式)转换为
UTF-8
中的中心点

您可能需要将其删除(或者检查是否可以向
CSVReader
FileReader
提供参数以跳过这些字节)。有关更多信息,请参阅