ByteArrayOutputStream baos = new ByteArrayOutputStream();
byte[] buffer = new byte[1024];
int len = 0;
while ((len = is.read(buffer)) != -1) {
System.out.println("读取的字节数--------------------)"+len);
baos.write(buffer, 0, len);
}
System.out.println("while 循环外面---------------)"+len);
打印的logcat :

程序不应该是每次读取1024个字节到buffer中吗?为什么会有868,156个字节读入的?
还有我想知道为什么read(byte[] buffer)方法可以每次可以读到不同的数据?难道它知道上次他读到哪里,然后自动从上一次读取的位置开始? 新手求解答~~~
------解决思路----------------------
上次读取的位置肯定是知道的,它是按流的顺序读取的
具体读取字节数不定可能它是为了实现时间上的最优策略,有多少先读多少,不多等待
------解决思路----------------------
对于底层来说都是字节,应当没多大关系,buffer没满就读到满,除非读到头,源码里也没声明特殊的地方,我测试了一下正常,楼主能发完整的代码吗
读取的字节数--------------------)1024
读取的字节数--------------------)1024
读取的字节数--------------------)1024
读取的字节数--------------------)1024
读取的字节数--------------------)1024
读取的字节数--------------------)1024
读取的字节数--------------------)1024
读取的字节数--------------------)1024
读取的字节数--------------------)1024
读取的字节数--------------------)1024
读取的字节数--------------------)1024
读取的字节数--------------------)1024
读取的字节数--------------------)1007
while 循环外面---------------)-1
------解决思路----------------------
ByteArrayOutputStream是读取内存缓存区的数据转换成字节数,楼主的is是从哪里获取到的呀?