[英]Java - read an array of bytes from an InputStream until a certain character
我需要從輸入流中讀取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'分隔
與其重新發明輪子,不如考慮使用(例如)來自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
視為行分隔符,以便確定行的結尾。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.