从 Java 中的输入流中读取一行文本,保留行终止字符
2022-09-04 23:16:53
我在Java中有这个代码:
InputStreamReader isr = new InputStreamReader(getInputStream());
BufferedReader ir = new BufferedReader(isr);
String line;
while ((line = ir.readLine()) != null) {
//do stuff with "line"
}
如果输入流包含以下内容:“hello\nhey\ryo\r\ngood-day”,则每次迭代时都会遵循行变量:
- 你好
- 嘿
- 唷
- 美好的一天
我想一次读取一行,但我想保留行终止字符:
- 你好\n
- 嘿\r
- yo\r\n
- 美好的一天
我该怎么做?有没有现成的类可以使用?
--
更新:
以下是我正在尝试执行的操作以及为什么我需要保留行尾字符(以及为什么 EOL 字符可能不同)。
我正在阅读 POST 请求。它们由纯文本消息组成,其中行始终以 \r\n 结尾(根据标准规范)。但是,POST 请求可能包含二进制数据,这些数据可能包含看起来像 Java Reader 对象的终止字符的字节。
在我的示例中,正在上传图像。图像数据在一行上发送。但是,图像的二进制数据包含字节,如果这两个字节恰好彼此相邻,READER 会将其解释为“\n”、“\r”或有时是“\r\n”。
我必须一次一行地阅读POST请求,因为这就是它的工作原理。我想,我可以阅读所有内容,然后解析整个内容。但这并不有效,特别是如果正在上传一个大文件(例如1024 MiB)文件。