Разрыв строки с помощью RSCRLF, а не только CRLF с использованием Java (1.8) - PullRequest
0 голосов
/ 11 марта 2019

В настоящее время я работаю над средством чтения файлов (File Input Stream и Buffered Reader) для чтения строк из файла (это собственный файл журнала приложения, в котором в качестве перевода строки находится CRLF, а в качестве разделителя записей - RSCRLF. Но когдаЯ использую Java File Readers, строки читаются на основе CR / LF по умолчанию и рассматриваются как разные строки, даже если они имеют одну и ту же строку до Разделителя записей (RS). Я начал читать символы один за другим (вместо строк) иполучил массив символов byte []. Но как мне проверить наличие символов RSCRLF и разорвать его в этой точке? Из таблицы ASCII:

RS -> CHAR, 30 -> DEC, 1E -> HEX
CR -> CHAR, 13 -> DEC, D -> HEX
LF -> CHAR, 10 -> DEC, A -> HEX

Есть идеи? Не ищите код, но идея о том, какпрочитать байты и найти RSCRLF вместе, чтобы разбить в этот момент?

Спасибо

1 Ответ

0 голосов
/ 13 марта 2019

Вы можете использовать Scanner с пользовательским разделителем, вот как это будет выглядеть:

...
Scanner scanner = new Scanner(readable);
scanner.useDelimiter("\u001E\r\n");
while (scanner.hasNext()) {
    String record = scanner.next();
    ...
}
...