从输入文件读取时出现新行,即使 \n 是定界的

New Line appearing when reading from input file, even though \n is Delimited

你好,我有这个代码:

Scanner input = new Scanner(new File("src/data/input.csv"));
input.useDelimiter(",|\n");
    
    
System.out.println(input.next());
System.out.println(input.next());
System.out.println(input.next());
System.out.println(input.next());
System.out.println(input.next());
System.out.println(input.next());
System.out.println(input.next());
System.out.println(input.next());
System.out.println(input.next());
System.out.println(input.next());

Input.csv 是:

-149.95038,61.13712,"McDonalds-Anchorage,AK","3828 W Dimond Blvd, Anchorage,AK, (907) 248-0597"

-149.93538,61.18167,"McDonalds-Anchorage,AK","4350 Spenard Rd, Anchorage,AK (907) 243-5122"

我的预期输出是:

-149.95038

61.13712

"McDonalds-Anchorage

AK"

"3828 W Dimond Blvd

Anchorage

AK

(907) 248-0597"

-149.93538

61.18167

相反,我得到:

-149.95038

61.13712

"McDonalds-Anchorage

AK"

"3828 W Dimond Blvd

Anchorage

AK

(907) 248-0597"

(blank line)

-149.93538

61.18167

我不确定为什么没有跳过新行。有没有更好的方法从输入文件中获取值?

这大概是一个Carriage Return/Line Feed issue。在 Windows(和其他一些系统)上,行分隔符是 \r\n 而不是 \n.

替换

input.useDelimiter(",|\n");

input.useDelimiter(",|\n|\r|(\r\n)");

这将确保运输 Return (\r) 被拾起。

但是,读取文件的最佳方式是使用 BufferedReader 而不是 Scanner(以相同的方式初始化它)。然后,使用 readLine() 阅读您的行并使用 line.split(",") 以逗号分隔您的行。

尝试使用系统行分隔符

input.useDelimiter(System.getProperty("line.separator"));