我有一個InputStream傳遞給一個方法來做一些處理。我將在其他方法中使用相同的InputStream,但在第一次處理後,InputStream出現在方法內部關閉。如何克隆InputStream?
如何克隆InputStream發送給關閉他的方法?還有另一個解決方案?
編輯:關閉InputStream的方法是從lib的外部方法。我沒有控制關閉與否。
private String getContent(HttpURLConnection con) {
InputStream content = null;
String charset = "";
try {
content = con.getInputStream();
CloseShieldInputStream csContent = new CloseShieldInputStream(content);
charset = getCharset(csContent);
return IOUtils.toString(content,charset);
} catch (Exception e) {
System.out.println("Error downloading page: " + e);
return null;
}
}
private String getCharset(InputStream content) {
try {
Source parser = new Source(content);
return parser.getEncoding();
} catch (Exception e) {
System.out.println("Error determining charset: " + e);
return "UTF-8";
}
}
你要「重置」的流方法返回之後?也就是說,從一開始就讀流? – aioobe 2011-05-07 20:43:51
是的,關閉的InputStream方法返回它編碼的字符集。第二種方法是使用第一個方法中的字符集將InputStream轉換爲字符串。 – 2011-05-07 20:49:14
你應該在這種情況下能夠做我在我的回答中描述的內容。 – Kaj 2011-05-07 20:55:43