Java Scanner для чтения как Unix, так и Windows Line feed - PullRequest
0 голосов
/ 05 июня 2018

Я читаю текстовый файл, используя Java Scanner.Файл может заканчиваться символом CRLF или LF (но не сочетанием обоих).Я использую приведенный ниже фрагмент кода:

try(Scanner scanner = new Scanner(file)){
    scanner.useDelimiter(Pattern.compile("(\\n) | (\\r\\n)"));
    while(scanner.hasNext()) {
        System.out.println(scanner.next());
    }
}

Однако он работает не так, как я ожидаю.Он не может читать построчно, а печатает содержимое всего файла.Если я использую LF или CRLF, он работает нормально.

Что я делаю не так?Как я могу поддерживать оба символа перевода строки?

1 Ответ

0 голосов
/ 05 июня 2018

Я думаю, что дополнительные пробелы вокруг вашего | являются проблемой.Вы пробовали без них?

Насколько я понимаю, вы могли бы также упростить свое регулярное выражение: \n|\r\n или \r?\n

...