求 inputstream 的内容读到 byte数组中的代码
------解决方案--------------------
FileInputStream.available()
------解决方案--------------------
如果InputStream里面的数据比较少,这样做简单明了,当然很好。
但是,如果InputStream里的数据很多,几百M,甚至上G,用楼主的办法的处理的话,恐怕,就会出现OutOfMemory错误(不信可以试试)。
另外,如果你操作的InputStream是Socket的InputStream,available()方法返回仅仅是当前Socket缓冲区中的字节数,不一定就是Socke对端发送给你的全部数据,等你read后,InputStream还会有别的数据,那么你还需要read一次,直到available()返回0或者-1,这其实还是一个循环。
流的设计思想是处理动态的,数据个数不可预知的数据,它就像一个管道,你永远都无法知道这个管道会传来多少数据(FileInputStream是一个特例),因此,一般情况下,都是边read,边处理。