想请问一下StreamUtils.streamToByteArray里传入的匿名IO流accept.getInputStream()是否需要关闭?如何关闭?
我有想过在方法里进行关闭,但是,一旦关闭,如果后续在主方法中调用accept.getOutputStream()是会抛出socket is closed异常的。所以不能在方法中关闭。
public class TCPFileUploadServer {
public static void main(String[] args) throws IOException {
ServerSocket serverSocket = new ServerSocket(8888);
Socket accept = serverSocket.accept();
// InputStream ais = accept.getInputStream();
byte[] picture = StreamUtils.streamToByteArray(accept.getInputStream());
}
}
其中StreamUtils.streamToByteArray 静态方法如下
public static byte[] streamToByteArray(InputStream is) throws IOException {
byte[] buff = new byte[1024];
int readLen = 0;
/*把字节数据写入到数组里,所以用ByteArrayOutputStream*/
ByteArrayOutputStream baos = new ByteArrayOutputStream();
while((readLen = is.read(buff)) != -1){
baos.write(buff,0,readLen);
}
/*返回此数组*/
byte[] bytes = baos.toByteArray();
baos.close();
return bytes;
}