请参阅以下代码并解释输出行为.
public class MyFinalTest {
public int doMethod(){
try{
throw new Exception();
}
catch(Exception ex){
return 5;
}
finally{
return 10;
}
}
public static void main(String[] args) {
MyFinalTest testEx = new MyFinalTest();
int rVal = testEx.doMethod();
System.out.println("The return Val : "+rVal);
}
}
Run Code Online (Sandbox Code Playgroud)
结果是返回Val:10.
Eclipse显示警告:finally block does not complete normally.
catch块中的return语句会发生什么?
这个FileInputStream.available()javadoc说:
返回可以从此输入流中读取(或跳过)的剩余字节数的估计值,而不会被下一次调用此输入流的方法阻塞.下一次调用可能是同一个线程或另一个线程.单个读取或跳过这么多字节不会阻塞,但可以读取或跳过更少的字节.
在某些情况下,非阻塞读取(或跳过)可能在其速度很慢时似乎被阻止,例如在通过慢速网络读取大型文件时.
我不确定在这张支票中是否:
if (new FileInputStream(xmlFile).available() == 0)
Run Code Online (Sandbox Code Playgroud)
我可以依赖那些空文件总是返回零吗?
-
谢谢@SB,他没有完全回答这个问题,但却是第一个给出最佳选择的人:
如果xmlFile是java.io.File对象,则可以使用length()方法获取其大小.