使用 Java (1.8) 使用 RSCRLF 而不仅仅是 CRLF 换行
Breaking a line with RSCRLF and not just CRLF using Java (1.8)
我目前正在处理文件 reader(文件输入流和缓冲 Reader)以从文件中读取行(这是来自应用程序的专有日志文件,它具有 CRLF 作为换行但 RSCRLF 作为记录分隔符。但是当我使用 Java 文件 Readers 时,这些行是基于默认 CR/LF 读取的,并且被视为不同的行,即使它们属于同一行直到记录分隔符 (RS)。我开始一个一个地读取字符(而不是行)并得到一个 byte[] 字符数组。但是我如何检查 RSCRLF 字符并在该点断开它?
来自 ASCII table:
RS -> CHAR, 30 -> DEC, 1E -> HEX
CR -> CHAR, 13 -> DEC, D -> HEX
LF -> CHAR, 10 -> DEC, A -> HEX
有什么想法吗?不是在寻找代码,而是在寻找如何读取字节并找到 RSCRLF 一起打破的想法?
谢谢
您可以使用带有自定义分隔符的 Scanner
,如下所示:
...
Scanner scanner = new Scanner(readable);
scanner.useDelimiter("\u001E\r\n");
while (scanner.hasNext()) {
String record = scanner.next();
...
}
我目前正在处理文件 reader(文件输入流和缓冲 Reader)以从文件中读取行(这是来自应用程序的专有日志文件,它具有 CRLF 作为换行但 RSCRLF 作为记录分隔符。但是当我使用 Java 文件 Readers 时,这些行是基于默认 CR/LF 读取的,并且被视为不同的行,即使它们属于同一行直到记录分隔符 (RS)。我开始一个一个地读取字符(而不是行)并得到一个 byte[] 字符数组。但是我如何检查 RSCRLF 字符并在该点断开它? 来自 ASCII table:
RS -> CHAR, 30 -> DEC, 1E -> HEX
CR -> CHAR, 13 -> DEC, D -> HEX
LF -> CHAR, 10 -> DEC, A -> HEX
有什么想法吗?不是在寻找代码,而是在寻找如何读取字节并找到 RSCRLF 一起打破的想法?
谢谢
您可以使用带有自定义分隔符的 Scanner
,如下所示:
...
Scanner scanner = new Scanner(readable);
scanner.useDelimiter("\u001E\r\n");
while (scanner.hasNext()) {
String record = scanner.next();
...
}