close()
使用流后一定要记得及时关闭流
<span style="font-size:14px;">try{
if(pis != null)
pis.close();
} catch(IOException e){
e.printStackTrace();
}</span>
当流对象为 null 时,调用 close() 会报空指针异常,所以必须先判断流对象非空,再关闭。
write() 写输出
1 写int
write()一般可以直接写如 int 数据
2 写字符串
write() 写入字符串时,需要把是字符串转化为字节数组:
pos.write("Hello Customer, I am Producer.".getBytes());
3 写字节数组
write(buffer) 将整个 buffer 写入输出流
write(buffer, 0, len) 将 buffer 中从偏移量 off 开始的 len 个字节写入此输出流。
flush()
使用流时,一般都会有一个缓冲区。我们把要发的数据先放到缓冲区,缓冲区满后再一次性发出,而不是写一次发一次。
如果不使用flush() ,当你写入的数据量很小时,数据可能一直在缓冲区中,对方可能读取不到数据。
所以,write() 后面一般都有 flush() 。