黑马程序员技术交流社区

标题: 这两个方法哪个比较好一些,给一些专业的建议 谢谢 [打印本页]

作者: 徐升2013    时间: 2013-4-2 12:56
标题: 这两个方法哪个比较好一些,给一些专业的建议 谢谢
本帖最后由 徐升2013 于 2013-4-3 09:06 编辑

public static void fun1(File file)
        {
                if(file.isDirectory())//判断是否是目录
                {
                        File[] list = file.listFiles();//是目录建立数组接收内容
                        for(int x = 0;x<list.length;x++)   //遍历数组。
                        {
                                fun1(list[x]);               //每遍历一次都递归进行判断。
                        }
                }
                System.out.println(file);

        }


上面是第一个方法,两个方法的目的都是为了获取目录下的所有文件和文件夹的操作。


public static void fun(File file)
        {
                try
                {
                        if(!file.isDirectory())                                //首先判断传入的是不是目录,不是目录抛出异常。
                                throw new IOException();
                        else
                                {
                                        File[] a = file.listFiles();   //是目录 建立file数组,并接收内容。
                                        for(int x = 0; x<a.length;x++)   
                                                {
                                                if(a[x].isDirectory())                //遍历该数组,如果数组中的某个对象仍然是目录,进行递归,继续循环。
                                                        {
                                                                fun(a[x]);
                                                        }        
                                                else
                                                        System.out.print(a[x]+"\t\n" ) ;//最后打印所有内容。
                                                }
                                }
                }
                catch (IOException e)
                {
                                System.out.println("您输入的不是目录。"+e.toString());//简单的异常处理。
                }

这个是我自己写的方法,  这里面的区别不用看异常的处理,这里的区别是:第一个方法是每次都会递归访问该方法,而我自己写的方法是判断之后才考虑是否递归访问,这两个方法哪个更好一些,第一个是某视频里面介绍的方法,自己感觉不是很好,不知道对还不对,所以来求证一下,感谢大神帮忙分析了

作者: 我手心里的宝    时间: 2013-4-2 12:59
1.从阅读性以及代码的简洁性,当然是第一个好
2.从思路来说,第一个也更简洁
毕老师讲的就是按照第一个方法,你再好好看看视频吧
作者: 徐升2013    时间: 2013-4-2 13:00
我手心里的宝 发表于 2013-4-2 12:59
1.从阅读性以及代码的简洁性,当然是第一个好
2.从思路来说,第一个也更简洁
毕老师讲的就是按照第一个方法 ...

但是第一个是不是造成了更多的内存开销啊?在效率上也是第一个快么
作者: 我手心里的宝    时间: 2013-4-2 13:03
徐升2013 发表于 2013-4-2 13:00
但是第一个是不是造成了更多的内存开销啊?在效率上也是第一个快么

我从的角度来说,第一个更好些,如果牵扯到效率,又不会成千上万的,也没事
其实你不用纠结这个,看以后的应用
你第二个内存开销也不小呀
作者: 徐升2013    时间: 2013-4-2 13:05
我手心里的宝 发表于 2013-4-2 13:03
我从的角度来说,第一个更好些,如果牵扯到效率,又不会成千上万的,也没事
其实你不用纠结这个,看以后 ...

我查视频了,毕老师的写法是按照我那种写的, 而我看的另外一个视频就是第一种写法,纠结就是纠结在这里了。  我那个开销是不小,但是抛开异常处理那些不看, 我在考虑的就是这两种思考方式哪个更好一些,大家有经验的 老手编程的时候应该是考虑哪一种方法才是正确的,就这个意识。
因为我是新手,才开始学,养成好习惯是很重要的
作者: 谢达    时间: 2013-4-2 13:50
第一种写法不怎么好。。应在递归之前判断一下是否是目录。递归开销很大。你的想法加个判断是对的。。
                                   
                        
作者: 王永贺    时间: 2013-4-2 14:41
第一个简洁 便于理解 但是开销大 第二个执行效率好





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2