Java Scanner在读取CSV文件时读取不存在的内容

use*_*210 2 java java.util.scanner

我有一个像这样的csv文件

Mike,Smith
Scuba,Steve
John,Doe
Run Code Online (Sandbox Code Playgroud)

和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();
Run Code Online (Sandbox Code Playgroud)

我得到输出:

Mike Smith
Scuba
Steve
John Doe
Run Code Online (Sandbox Code Playgroud)

我不明白什么可能使这个工作在前两个名称而不是中间名称

aio*_*obe 5

这是因为Smith\nScuba成为一个令牌.(,他们没有分开.)

运用

file.useDelimiter(",|\n");
Run Code Online (Sandbox Code Playgroud)

解决了这个问题.


如果您碰巧使用的是Java 8,我建议您使用以下内容:

Files.lines(Paths.get("input.txt"))
     .forEach(line -> {
         Scanner s = new Scanner(line);
         s.useDelimiter(",");
         System.out.println(s.next() + " " + s.next());
     });
Run Code Online (Sandbox Code Playgroud)