如下:
while((len=in.read(data))!=-1){
outputstream.write(data,0,len);
}
(len=in.read(data))会等于-1吗?什么时候会等于-1?如果不会等于-1,那么这个循环岂不成了死循环了吗?
io read是读取数据流的,当读到流的结尾即EOF时会返回-1,你放心不会出现死循环的,不会有无限大的数据流,文件的大小是有限制的
当读到文件结尾 即EOF时返回-1
查一下API就知道了[quote]public abstract int read()
throws IOException从输入流读取下一个数据字节。返回 0 到 255 范围内的 int 字节值。如果因已到达流末尾而没有可用的字节,则返回值 -1。在输入数据可用、检测到流的末尾或者抛出异常前,此方法一直阻塞。
子类必须提供此方法的一个实现。
返回:
下一个数据字节,如果到达流的末尾,则返回 -1。
抛出:
IOException - 如果发生 I/O 错误。
[/quote]
由类java.io.InputStream定义了该规范,其子类实现时都依循此规范
会等于-1的,当读到文件结尾是返回EOF,实际上EOF的值通常是-1,也可以使用如下方式
while((len=in.read(data))>0){}