所以我正在尝试使用扫描仪读取csv文件到我的(java)jpa项目,问题是一旦它到达行的末尾,它会读取\ n并且它给了我一个例外,我'尝试使用方法scanner.skip("[\r\n]+")
,但即使这样它也无法正常工作。我正在使用scanner.next()
,因为我正在使用分隔符,因此在这种情况下,方法nextLine()
对我没有帮助。有人能帮助我吗?
Scanner sc = new Scanner (new File(loq)).useDelimiter(";");
pote = sc.next();
Questoes quest = new Questoes( );
do
{
EntityManagerFactory quest_factory = Persistence.createEntityManagerFactory("TRM");
EntityManager entitymanager = quest_factory.createEntityManager( );
entitymanager.getTransaction( ).begin( );
//pote = sc.next();
System.out.println(pote);
quest.setCategory(Integer.parseInt(pote));
pote = sc.next();
System.out.println(pote);
quest.setlevel(Integer.parseInt(pote));
pote = sc.next();
System.out.println(pote);
quest.setQuestion(pote);
pote = sc.next();
System.out.println(pote);
quest.setR1(pote);
pote = sc.next();
System.out.println(pote);
quest.setR2(pote);
pote = sc.next();
System.out.println(pote);
quest.setR3(pote);
pote = sc.next();
System.out.println(pote);
quest.setCorrect(pote);
System.out.println("End of line");
sc.skip("[\r\n]");
entitymanager.persist( quest );
entitymanager.getTransaction( ).commit( );
entitymanager.close( );
quest_factory.close( );
}
while((pote = sc.next())!= null);
sc.close();
错误截图
答案 0 :(得分:0)
行尾字符在不同平台上有所不同。 \r\n
在Windows上,\n
在Linux上,\r
是Mac OS上的默认设置。我不建议明确指定要跳过的行尾字符。尝试
while (scanner.hasNext()) {
// other code
if (scanner.hasNextLine())
scanner.nextLine();
}
而是因为这将自动整理平台相关的东西,并能够处理文件的结尾。
也可能是因为你还没有真正到达该行的末尾,但是如果不知道你的csv文件中有哪些条目,我就无法告诉你很多
答案 1 :(得分:0)
我得到了答案,在最后一个String中我只使用nextLine()而不是next()。