功能:例子中输出字符编码为GBK,输入流保护 50KB,读取InputStream输入流后输出String字符串。
private static final String DEFAULT_ENCODING = "GBK";//编码
private static final int PROTECTED_LENGTH = 51200;// 输入流保护 50KB
public String readInfoStream(InputStream input) throws Exception {
if (input == null) {
throw new Exception("输入流为null");
}
//字节数组
byte[] bcache = new byte[2048];
int readSize = 0;//每次读取的字节长度
int totalSize = 0;//总字节长度
ByteArrayOutputStream infoStream = new ByteArrayOutputStream();
try {
//一次性读取2048字节
while ((readSize = input.read(bcache)) > 0) {
totalSize += readSize;
if (totalSize > PROTECTED_LENGTH) {
throw new Exception("输入流超出50K大小限制");
}
//将bcache中读取的input数据写入infoStream
infoStream.write(bcache,0,readSize);
}
} catch (IOException e1) {
throw new Exception("输入流读取异常");
} finally {
try {
//输入流关闭
input.close();
} catch (IOException e) {
throw new Exception("输入流关闭异常");
}
}
try {
return infoStream.toString(DEFAULT_ENCODING);
} catch (UnsupportedEncodingException e) {
throw new Exception("输出异常");
}
}