我需要从输入流中读取Base64编码的字节数组。
当我在解码的字符串中到达\ n字符时,我必须停止阅读,我找不到有效的方法。
现在我结束了这样的事情,但是它并没有按预期工作,因为它太容易了,它捕获了异常并弄乱了一切……
byte buffer[] = new byte[2048];
byte results[] = new byte[2048];
String totalResult = null;
try {
int bytes_read = is.read(buffer);
while (buffer[bytes_read - 1] != '\n') {
bytes_read = is.read(buffer);
String app = new String(buffer, 0, bytes_read);
totalResult += app;
}
String response = Base64.getDecoder().decode(totalResult).toString();
有什么主意吗?输入Stream不会关闭,因此我需要从中获取数据并以'\ n'
分隔答案 0 :(得分:1)
考虑重新设计轮子,而不是考虑使用Commons Codec项目中的org.apache.commons.codec.binary.Base64InputStream
和BufferedReader
(JavaDoc)来包装InputStream
像这样:
try(BufferedReader reader = new BufferedReader(new InputStreamReader(new Base64InputStream(is)))) {
String response = reader.readLine();
...
}
注意:
BufferedReader.readLine()
将\n
,\r
或\r\n
视为行分隔符,以确定行的结尾。