Java 返回空值的BufferedReader.readline()

Java 返回空值的BufferedReader.readline(),java,file,inputstream,Java,File,Inputstream,我正在创建这个方法,它将InputStream作为参数,但是readLine()函数返回null。调试时,inputstream不为空 else if (requestedMessage instanceof BytesMessage) { BytesMessage bytesMessage = (BytesMessage) requestedMessage; byte[] sourceBytes = new byte[(int) byte

我正在创建这个方法,它将
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(通用字符集中的U+转换格式-8位可能会有所帮助

您确定正在初始化并向函数传递有效的InputStream吗

另外,仅供参考,您可能试图将函数命名为convertInputStreamToString而不是convertInputStringToString

这里有两种将InputStream转换为字符串的其他方法,可以试试吗

一,

二,

编辑: 您不必显式地将ByteArrayInputStream转换为InputStream。您可以直接执行以下操作:

InputStream inputStrm = new ByteArrayInputStream(sourceBytes);

我们无法从给定的代码中真正判断错误。请使用复制此行为的方法进行编辑。这取决于您的
inputStream
,您没有共享它。更不用说,您可以使用
IOUtils.toString()
来自
公用io
。如何初始化
输入流
?是否确定正在向
输入流
传递有效的内容,以便
readLine()
不会返回
null
public String convertInputStringToString(InputStream is) {
    java.util.Scanner s = new java.util.Scanner(is, encoding).useDelimiter("\\A");
    return s.hasNext() ? s.next() : "";
}
InputStream inputStrm = new ByteArrayInputStream(sourceBytes);