繁体   English   中英

BufferedReader.readline()返回null值

[英]BufferedReader.readline() returning null value

我正在创建此方法,该方法将InputStream作为参数,但readLine()函数返回null 在调试时,inputstream不为空。

else if (requestedMessage instanceof BytesMessage) {                    
    BytesMessage bytesMessage = (BytesMessage) requestedMessage;
    byte[] sourceBytes = new byte[(int) bytesMessage.getBodyLength()];
    bytesMessage.readBytes(sourceBytes);
    String strFileContent = new String(sourceBytes);                 
    ByteArrayInputStream byteInputStream = new ByteArrayInputStream(sourceBytes);
    InputStream inputStrm = (InputStream) byteInputStream;
    processMessage(inputStrm, requestedMessage);
}


 public void processMessage(InputStream inputStrm, javax.jms.Message requestedMessage) {
    String externalmessage = tradeEntryTrsMessageHandler.convertInputStringToString(inputStrm);
}

public String convertInputStringToString(InputStream inputStream) throws IOException {
    BufferedReader br = new BufferedReader(new InputStreamReader(inputStream));

    StringBuilder sb = new StringBuilder();

    String line;
    while ((line = br.readLine()) != null) {
        sb.append(line);
    }

    br.close();
    return sb.toString();
}

请试试这个,

BufferedReader br = new BufferedReader(new InputStreamReader(inputStream, "UTF-8"));

我认为原始数据采用的格式不符合字符集。 所以提到UTF-8(来自通用字符集+转换格式-8位的U可能有所帮助

您确定要初始化并将有效的InputStream传递给函数吗?

另外,仅仅是FYI也许你试图命名你的函数convertInputStreamToString而不是convertInputStringToString

以下是将InputStream转换为String的其他两种方法,尝试这些可能吗?

1。

String theString = IOUtils.toString(inputStream, encoding); 

2。

public String convertInputStringToString(InputStream is) {
    java.util.Scanner s = new java.util.Scanner(is, encoding).useDelimiter("\\A");
    return s.hasNext() ? s.next() : "";
}

编辑:您不需要显式地将ByteArrayInputStream转换为InputStream。 你可以直接做:

InputStream inputStrm = new ByteArrayInputStream(sourceBytes);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM