CloseableHttpClient httpClient= HttpClients.createDefault(); HttpGet httpGet=new HttpGet("http://fileservice-test.kube.com/fileservice/api/file/download?path=2023/07/06/A/1688633674343010000010939.pdf&downloadToken=E75E05D320954E19B2B9C1DB482342BD"); CloseableHttpResponse response=httpClient.execute(httpGet); try { HttpEntity httpEntity=response.getEntity(); if(httpEntity!=null){ String httpheader = httpEntity.getContentType().toString(); long contentlength=httpEntity.getContentLength(); // 打印实体信息 System.out.println("Content Type: " + httpheader); System.out.println("Content Length: " + contentlength); try (InputStream inputStream=httpEntity.getContent()){ BufferedReader reader=new BufferedReader(new InputStreamReader(inputStream)); String line = ""; while ((reader.readLine()!=null)){ line=line+reader.readLine(); } System.out.println(line+"执行一次"); String lines = ""; while ((reader.readLine()!=null)){ lines=reader.readLine(); System.out.println(lines+"执行一次"); } }
时间: 2024-02-10 16:24:21 浏览: 120
在你的代码中,你在第一个while循环中读取了所有行并将其添加到`line`变量中。然后,你再次尝试使用同一个`BufferedReader`对象 `reader` 在第二个while循环中读取行。但是,由于第一个循环已经读取了所有行,此时`reader`已经到达末尾,所以第二个循环不会执行。
如果你想在第一个循环之后再次读取行,你需要重新创建一个新的`BufferedReader`对象。修改代码如下所示:
```java
try (InputStream inputStream = httpEntity.getContent()) {
BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
String line = "";
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
System.out.println("执行一次");
// 创建新的 BufferedReader 对象
BufferedReader newReader = new BufferedReader(new InputStreamReader(inputStream));
String lines = "";
while ((lines = newReader.readLine()) != null) {
System.out.println(lines);
System.out.println("执行一次");
}
}
```
这样,你就可以在第一个循环中读取所有行,并在第二个循环中再次读取所有行。注意,在第二个循环中,我们创建了一个新的`BufferedReader`对象 `newReader` 来读取行,因为之前的`reader`已经到达末尾。
阅读全文