/**
* 缓存InputStream,以便InputStream的重复利用
*/
public class InputStreamCacher {
/**
* 将InputStream中的字节保存到ByteArrayOutputStream中。
*/
private ByteArrayOutputStream byteArrayOutputStream = null;
/**
* InputStream的重复利用
*
* @param inputStream
* @return
*/
public InputStreamCacher(InputStream inputStream) {
if (inputStream == null) {
return;
}
byteArrayOutputStream = new ByteArrayOutputStream();
byte[] buffer = new byte[1024];
int len;
try {
while ((len = inputStream.read(buffer)) > -1) {
byteArrayOutputStream.write(buffer, 0, len);
}
byteArrayOutputStream.flush();
} catch (IOException e) {
throw new RuntimeException("缓存InputStream异常:", e);
}
}
/**
* 获取缓存的流
*
* @return
*/
public InputStream getInputStream() {
if (byteArrayOutputStream == null) {
return null;
}
return new ByteArrayInputStream(byteArrayOutputStream.toByteArray());
}
}
网友评论