Nasıl bir İnputStream clone?
Bazı işlemleri yapmak için bir yöntem önünden geçtiğim bir İnputStream. Diğer bir yöntem, aynı İnputStream kullanacağım, ama ilk işledikten sonra, İnputStream görünür yöntemi içinde kapatılacak.
Bu İnputStream onu kapatır bu yöntemi göndermek için klon nasıl yapabilirim? Başka bir çözüm var mı?
EDİT: İnputStream harici bir yöntemdir kapatan yöntemlerden bir lib. Ben kapanış değil tek bir kontrol var.
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";
}
}
CEVAP
Eğer tüm istediğin okuyun aynı bilgileri birden fazla kez, ve giriş verilerinin yeterince küçük uygun bellek, kopyalama veri InputStream
ByteArrayOutputStream.
Sonra bayt ilişkili dizi elde edilir ve pek çok "gibi" ByteArrayInputStreams. klonlanmış gibi açabilirsiniz
ByteArrayOutputStream baos = new ByteArrayOutputStream();
// Fake code simulating the copy
// You can generally do better with nio if you need...
// And please, unlike me, do something about the Exceptions :D
byte[] buffer = new byte[1024];
int len;
while ((len = input.read(buffer)) > -1 ) {
baos.write(buffer, 0, len);
}
baos.flush();
// Open new InputStreams using the recorded bytes
// Can be repeated as many times as you wish
InputStream is1 = new ByteArrayInputStream(baos.toByteArray());
InputStream is2 = new ByteArrayInputStream(baos.toByteArray());
Ama eğer gerçekten özgün akış açık tutmak için yeni veri almak gerekiyorsa, o zaman close()
Bu harici bir yöntem izlemek ve bir şekilde adlı önlemek gerekir.
Nasıl gıt tek bir şube clone?...
Nasıl git-svn Subversion deposundan n ...
Nasıl run " kullanıcı adı ve parola sa...
Nasıl geçerli dizine clone Git al...
Nasıl bir vaka sınıf clone örneği ve S...