Java中的flush 刷新流

经过查找网上的资料,总结如下

在做客户端与服务端时,

服务端都是先读后写的,因为read方法是阻塞的.只有读到,才会向下执行.

//获取socket中的输出流对象来响应数据
       DataOutputStream dos = new DataOutputStream(socket.getOutputStream());
       //发送数据类型
       dos.writeByte(1);
       //发送数据长度
       String str = "接受到了客户端的响应数据!";
       byte[] content = str.getBytes("utf-8");
       dos.writeInt(content.length);
       
       //发送数据内容
       dos.write(content);
       dos.flush();
       
       /**
        * flush() 方法是清空,即清空缓冲区数据,就是说
        * 你用读写流的时候,其实数据是先被读到了内存中,
        * 然后用数据写到文件中,当你数据读完的时候不代表你的数据已经写完了,
        * 因为还有一部分有可能留在内存这个缓冲区中.这时候如果你调用了
        * close方法关闭了读写流,那么这部分数据就会丢失,
        * 所以应该再关闭读写流之前先flush(),显得清空数据.
        */
       //刷新就是将内存(缓冲区)中的数据(是一个字节数组)强制写到磁盘/浏览器/控制台/文件

你可能感兴趣的:(Java中的flush 刷新流)