Java编程输入流方面的read()方法问题
图1这种while语句里面直接写iStream.read()!=-1是错误的只能输出:elhnoeyu图2这种写法是正确的,因为多加了temp会正确输出:helloChi...
图1这种while语句里面直接写iStream.read()!=-1 是错误的只能输出:el hn oeyu图2这种写法是正确的,因为多加了temp 会正确输出: hello China I love you想问下为什么出现这种情况?我感觉这两个语句要表达的意思是一样的,都是如果没读取到结尾(即返回-1)就继续往下读,然后输出,请详细分析下为什么有区别?谢谢!
展开
1个回答
展开全部
这里涉及到指针的问题,输入流在读取文件的时候用指针来标识从哪里开始读、上一次读到了哪里、读到哪里结束等等,read()方法就是读取到下一个指针位置。你在while判断中调用了read()方法,指针就会右移一个单位,输出语句中又用到了read()方法,指针又要右移一个单位。第一个方法中,每循环一次,指针会右移两个单位,肯定是不行的。所以我们只能用第二种方法,用一个变量记录下read()的值,然后输出变量。
不仅仅在输入流,所有用到指针的地方,都要注意这一点。
不仅仅在输入流,所有用到指针的地方,都要注意这一点。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询