首页 > 解决方案 > 使用 Java (1.8) 使用 RSCRLF 而不仅仅是使用 CRLF 打破一条线

问题描述

我目前正在使用文件阅读器(文件输入流和缓冲阅读器)从文件中读取行(这是来自应用程序的专有日志文件,它具有 CRLF 作为换行符,但 RSCRLF 作为记录分隔符。但是当我使用 Java文件阅读器,这些行是根据默认的 CR/LF 读取的,即使它们在记录分隔符(RS)之前是同一行,也被视为不同的行。我开始一个接一个地读取字符(而不是行)并得到一个字节[] 字符数组。但是我如何检查 RSCRLF 字符并在那时打破它?来自 ASCII 表:

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

有任何想法吗?不是在寻找代码,而是在寻找关于如何读取字节并找到 RSCRLF 以在那时中断的想法?

谢谢

标签: javanewlinefilestream

解决方案


您可以将 aScanner与自定义分隔符一起使用,如下所示:

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

推荐阅读