我有一个来自 HttpURLConnection 的 inputStream。inputStream 作为属性传递给一个对象,该对象稍后将通过 Struts2 框架的 getter 调用,以将流直接提供给用户浏览器。虽然代码似乎按预期工作,但我担心我无法正确关闭 HttpURLConnection,因为这会使我的输入流在从用户浏览器读取之前无效。代码如下:
private void DownloadOutput(DownloadableObject retVal, URL u, String cookie) {
try {
HttpURLConnection conn = (HttpURLConnection) u.openConnection();
conn.setRequestMethod("GET");
conn.setRequestProperty("Cookie", cookie);
Map<String, List<String>> headers = conn.getHeaderFields();
retVal.setContentLength(conn.getContentLength());
retVal.setStream(new BufferedInputStream(conn.getInputStream()));
// in.close();
// conn.disconnect();
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
有什么建议是最佳方法吗?我假设 gc 稍后会清除 HttpURLConnection 对象,但最好主动做一些内务处理。我还假设传递给代理对象的“新 BufferedInputStream”将被底层的 struts 框架(?)关闭。