不是重复的,因为那里提供的解决方案也无法像尝试的一样工作。
我正在尝试读取ClientHttpResponse,并尝试将其转换为字符串。在执行此过程时,我正面临文件异常的过早终止。
下面是场景,
如果我在以下代码的for循环中运行我的代码(300次),
return new ObjectMapper().writeValueAsString(new BufferedReader(new InputStreamReader(clientHttpResponse.getBody())).readLine());
我收到一条错误消息,为Premature EOF; nested exception is java.io.IOException: Premature EOF
并且成功运行99次迭代后,会出现上述错误消息。这意味着从1到99的循环是有效的,但是对于第100次迭代,正在发生异常。
当我尝试使用以下替代代码
Stream<String> stream = new BufferedReader(new InputStreamReader(clientHttpResponse.getBody())).lines();
StringBuffer buffer = new StringBuffer();
stream.forEach(i -> buffer.append(i));
return new ObjectMapper().writeValueAsString(buffer);
经过99次成功的迭代后,出现如下错误。
java.io.UncheckedIOException: java.io.IOException: Premature EOF
at java.io.BufferedReader$1.hasNext(BufferedReader.java:574)