都差不多吧,不过你最好把FileInputStream放到外面,然后再fianlly中关闭

解决方案 »

  1.   

    如果用第一种,按上面的代码not exist的情况你如何获知??  建议在第一种情况下加一个else条件print输出文件不存在。
    两种方法都可以,关键是逻辑要正确、完整,起码你自己调试的时候知道哪里出错了。
      

  2.   

    ...其实我是想问的是,能够用方法判断出来的是否最好就不要用catch()捕获?会影响效率?
    但是这里没体现出来,IOException是 NotFound的父类,第一个即使我用的if判断,虽然不会引发NotFound异常。
    如果我上面说的成立的话,用IF避免掉一些异常,然后下面catch用一个Exception类,这样对于效率是否有帮助?
      

  3.   

    ...其实我是想问的是,能够用方法判断出来的是否最好就不要用catch()捕获?会影响效率?
    但是这里没体现出来,IOException是 NotFound的父类,第一个即使我用的if判断,虽然不会引发NotFound异常。
    如果我上面说的成立的话,用IF避免掉一些异常,然后下面catch用一个Exception类,这样对于效率是否有帮助?
      

  4.   

    ...其实我是想问的是,能够用方法判断出来的是否最好就不要用catch()捕获?会影响效率?
    但是这里没体现出来,IOException是 NotFound的父类,第一个即使我用的if判断,虽然不会引发NotFound异常。
    如果我上面说的成立的话,用IF避免掉一些异常,然后下面catch用一个Exception类,这样对于效率是否有帮助?强大的google还是告诉我,跟我一样有疑惑的人不少,终于再一个询问帖中找到了答案及解答。
    问题:A 和B在性能上的区别在哪?
    A:  
    try {
        for(int i = 0; i < max; i++) {
            String myString = ...;
            float myNum = Float.parseFloat(myString);
            myFloats[i] = myNum;
        }
    } catch (NumberFormatException ex) {
        return null;
    }
    B:
    for(int i = 0; i < max; i++) {
        String myString = ...;
        try {
            float myNum = Float.parseFloat(myString);
        } catch (NumberFormatException ex) {
            return null;
        }
        myFloats[i] = myNum;
    }
    其实在功能上明显有区别,一个for循环中出现一个异常就终止,另一个则是会很负责任的把它全部跑完,但问题不是问功能,而是问性能上的区别。性能无非就是看 空间消耗,时间消耗 ,想当然就觉得try catch重复执行了这么多次肯定比只执行了一次跑得肯定慢,空间消耗肯定更大。好吧,哥承认完全不了解其中的工作原理。讨论的结果是:在没有抛出异常的情况下,性能完全没区别。
      

  5.   

    第二种好 第一种等于为了判断文件存在 创建了个用不上的File类  
      

  6.   

    我也是这么想的,但是java强制要求要有try catch捕捉,这里即使我有了判断保证不会出现文件未找到的异常,但是还是得用try
      

  7.   

    我也是这么想的,但是java强制要求要有try catch捕捉,这里即使我有了判断保证不会出现文件未找到的异常,但是还是得用try能让程序不抛出异常就不抛出JAVA的非RUNTIME异常要求捕捉,是因为这些异常是程序无法根本避免的,也就是说,你写程序的水平再牛B,这些异常情况也无法避免,比如磁盘出现坏道、正在进行TCP通信时对方主机当机、正在访问数据库时数据库死机等,你写程序的水平再高,拦不住这些客观情况的发生,所以JAVA要求你处理这些异常情况
    而runtime异常是可以通过优化代码避免的,比如你在使用对象之前判断一下对象是否为空就可以避免空指针异常;在访问数组前比较一下下标值和数组长度就可以避免数组越界异常……楼主在访问文件之前,先判断一下文件是否存在,就可以避免文件找不到的异常