Java扫描器在读取CSV文件时读取不存在的内容
我有一个csv文件是这样的Java扫描器在读取CSV文件时读取不存在的内容,java,java.util.scanner,Java,Java.util.scanner,我有一个csv文件是这样的 Mike,Smith Scuba,Steve John,Doe java代码如下所示: Scanner file=new Scanner(new File("input.txt")); file.useDelimiter(","); while (file.hasNext()){ String s1=file.next(); String s2=file.next(); System.out.println(s1+" "+s2);
Mike,Smith
Scuba,Steve
John,Doe
java代码如下所示:
Scanner file=new Scanner(new File("input.txt"));
file.useDelimiter(",");
while (file.hasNext()){
String s1=file.next();
String s2=file.next();
System.out.println(s1+" "+s2);
}
file.close();
我得到的结果是:
Mike Smith
Scuba
Steve
John Doe
我不明白是什么原因使得前两个名字能起作用,但中间的名字不能起作用,这是因为
Smith\nScuba
变成了一个标记。(没有,
将它们分开。)
使用
解决了这个问题
如果您碰巧使用Java 8,我建议您使用以下内容:
Files.lines(Paths.get("input.txt"))
.forEach(line -> {
Scanner s = new Scanner(line);
s.useDelimiter(",");
System.out.println(s.next() + " " + s.next());
});
此时使用
String.split
似乎更容易。生成Scanner
s的加载速度不快…如果split完成了任务,那么请确定。因为OP使用的是扫描器,我想也许他的实际代码要复杂一点。无论如何,最好的方法可能是使用CSV库,这样像a,“b,c”,d这样的东西也能正确处理。
Files.lines(Paths.get("input.txt"))
.forEach(line -> {
Scanner s = new Scanner(line);
s.useDelimiter(",");
System.out.println(s.next() + " " + s.next());
});