Как сделать так, чтобы Scanner.next () сохранил последний символ "\ n"? - PullRequest
1 голос
/ 11 апреля 2019

У меня есть файл с содержанием "hi there tom!\n".То есть в самом конце файла есть символ новой строки.

Когда этот код запускается для этого файла:

File file = new File(path.toString());
String content = new Scanner(file).useDelimiter("\\Z").next();

Конечный \n отсутствует вcontent.Как заставить \n сохранить?

Ответы [ 2 ]

1 голос
/ 11 апреля 2019

Используйте nextLine () вместо next (), чтобы использовать символ \n в конце каждой строки.

1 голос
/ 11 апреля 2019

Scanner.useDelimiter() интерпретирует свой аргумент как Pattern (регулярное выражение). И процитировать из документации API для Pattern:

Сводка конструкций регулярных выражений

Граничные сопоставители

  • \Z - конец ввода, кроме конечного терминатора, если таковой имеется
  • \z - конец ввода

Таким образом, чтобы прочитать файл до конца, не игнорируя терминатор последней строки, измените аргумент на useDelimiter() с "\\Z" на "\\z".

...