ᴡᴀᴋᴜ⌓‿⌓ᴡᴀᴋᴜ 2022-10-17 18:06 采纳率: 100%
浏览 19
已结题

方法中的形参传入匿名IO流,此流需要关闭吗?怎么关闭?

问题遇到的现象和发生背景

想请问一下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;
    }

  • 写回答

0条回答 默认 最新

    报告相同问题?

    问题事件

    • 系统已结题 10月25日
    • 创建了问题 10月17日