当我尝试使用java程序从CSV文件中读取列中的多行数据时,它没有提供工作,为此我使用了缓冲的Reader
我为此使用了缓冲读卡器
private static List<Book> readBooksFromCsv(String fileName) {
List<Book> books=new ArrayList<>();
Path filePath=Paths.get(fileName);
try {
BufferedReader br=Files.newBufferedReader(filePath,StandardCharsets.US_ASCII);
String line=br.readLine();
while(line!=null)
{
String []attribute=line.split(",");
Book book=createBook(attribute);
books.add(book);
line=br.readLine();
}
}
catch(IOException e)
{
e.printStackTrace();
}
return books;
}
private static Book createBook(String[] attribute) {
int transactionId=Integer.parseInt(attribute[0]);
int caseId=Integer.parseInt(attribute[1]);
String lastName=attribute[2];
return new Book(transactionId,caseId,lastName);
}
想解决上述问题
答案 0 :(得分:0)
您需要使用CSV解析库,或修改读取数据的方式。看看OpenCSV。
单个CSV记录包含一个或多个具有一个或多个换行符的值是可能且有效的。上面的代码假定每个CSV记录均不包含换行符。
例如,您的代码将处理以下问题:
Sally Smith,123,F
但是,您的代码会将以下内容解释为两个单独的CSV记录-一个包含单个值Jeff
,另一个包含三个值Johnson,333,M
,而不是看到三个值的单个记录,其中第一个值包含换行符:
Jeff
Johnson,333,M