簡體   English   中英

Java-從InputStream讀取字節數組,直到某個字符為止

[英]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.Base64InputStreamBufferedReaderJavaDoc )來包裝InputStream如下所示:

try(BufferedReader reader = new BufferedReader(new InputStreamReader(new Base64InputStream(is)))) {
    String response = reader.readLine();
    ...
}

筆記:

  • 完成后,嘗試使用資源將自動關閉閱讀器。
  • Base64InputStream將動態解碼Base64編碼的字符
  • BufferedReader.readLine()\\n\\r\\r\\n視為行分隔符,以便確定行的結尾。
  • 我確定存在其他有助於即時解碼的庫,或者您可以自己編寫一個簡單的InputStreamWrapper。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM