InputStream好比瓶子里面的水,拿完之后就空了,所以在第二次调用时就会发生空指针异常,为了解决这个问题可以将其先存在byteArrayOutputStream中,使用的时候再度生成就ok
DEMO:
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
public class InputStreamFactory {
private ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
private byte[] buffer = new byte[1024];
public InputStreamFactory(InputStream input) throws IOException {
int len;
while ((len = input.read(buffer)) > -1) {
byteArrayOutputStream.write(buffer, 0, len);
}
byteArrayOutputStream.flush();
}
public InputStream newInputStream() {
return new ByteArrayInputStream(byteArrayOutputStream.toByteArray());
}
}
调用方:
public Boolean checkData(InputStream in2) throws IOException {
InputStreamFactory inputStreamFactory = new InputStreamFactory(in2);
Set set1 = columnValue(inputStreamFactory.newInputStream(),0, 0);