62,614
社区成员
发帖
与我相关
我的任务
分享
while ((len=ol.read())!=-1);{
po.write(len);
}
很明显,while条件后面,多了一个分号。
在Java语法中,while循环的循环体有两种情况:
1. 单个语句;
2. 多个语句构成的代码块。
先说多个语句的情况,多个语句构成的代码块,要用花括号括起来。这个代码块,不仅仅只适用于wile循环,if分支,switch分支,以及函数体内随便哪个地方,都可以写的。
再来说说单个语句,单个语句以分号结尾即可,最简单的情况就是空语句,只由一个分号构成。
那么,问题来了。楼主的while循环,由于while条件后面直接跟了一个分号,就变成循环体是个空语句了。后面的代码块不会进入循环结构,只会执行一次。
程序最终的执行结果,应该是"dimo/a.jpg"文件只写入了一个字节的数据,当然是无法正常打开的了,数据不全嘛。
另外,1楼的答案存在问题。楼主的用法是正确的,只是循环结构上面出了的小毛病。1楼推荐的数组形式的参数,其实就是Buffer形式的读写,与楼主的用法相比,无非就是效率高了几十倍而已,但是,结果是相同的。