从输入文件读取时出现新行,即使\ n是分隔符

时间:2015-03-14 19:48:43

标签: java csv io

您好,我有这段代码:

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

     

“麦当劳-安克雷奇

     

AK“

     

“3828 W Dimond Blvd

     

安克雷奇

     

AK

     

(907)248-0597“

     

-149.93538

     

61.18167

相反,我得到了:

  

-149.95038

     

61.13712

     

“麦当劳-安克雷奇

     

AK“

     

“3828 W Dimond Blvd

     

安克雷奇

     

AK

     

(907)248-0597“

     

(空行)

     

-149.93538

     

61.18167

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

2 个答案:

答案 0 :(得分:4)

这可能是Carriage Return/Line Feed issue。在Windows(以及其他一些系统)上,行分隔符为\r\n而不是\n

替换

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

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

这将确保选择回车(\r)。

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

答案 1 :(得分:0)

尝试使用系统行分隔符

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