Java Scanner换行符识别

我找不到默认情况下指定扫描程序如何处理换行模式的文档。 我想逐行读取文件,让扫描仪能够处理\ r,\ n或\ r \ n行结尾,无论程序实际运行的系统如何。

如果我宣布这样的扫描仪:

Scanner scanner = new Scanner(reader); 

什么是默认行为? 它会如上所述处理所有这三种,还是我必须明确告诉它呢?

查看Sun JDK 1.6的源代码,使用的模式是“\ r \ n | [\ n \ r \ u \ u2028 \ u2029 \ u0085]”

它分别表示“\ r \ n”或\ r,\ n中的任何一个或“行分隔符”,“段分隔符”和“下一行”的unicode字符。

它没有记录(在Java 1.6中),但JDK代码使用此正则表达式来匹配换行符:

 "\r\n|[\n\r\u2028\u2029\u0085]" 

这是源代码的链接: http : //cr.openjdk.java.net/~briangoetz/7012540/webrev/src/share/classes/java/util/Scanner.java.html

IMO,这应该被指定,因为Scanner对行分隔符的行为与(例如) BufferedReader不同。 (我已提交错误报告……)