黑马程序员技术交流社区

标题: 编写了递归,但是输入盘符的根目录,会报错, [打印本页]

作者: 江月念华    时间: 2016-9-20 23:38
标题: 编写了递归,但是输入盘符的根目录,会报错,
public static void main(String[] args) throws IOException {
                Scanner sc = new Scanner(System.in);
                System.out.println("请输入一个文件夹路径");
                String dir = sc.nextLine();
                long size =0;
               
                File fis = new File(dir);
                if(!fis.exists()){
                        System.out.println("您输入的文件夹不存在");
                }else if(fis.isFile()){
                        System.out.println("您输入的是一个文件,请输入文件夹");
                }else{
                        File[] file = fis.listFiles();
                        for (File f : file) {
                                 size +=getFile(f);
                        }
                        System.out.println(size);
                }
        }

        public static long getFile(File f) {
                long s = 0;
                if(f.isFile()){
                         s =  f.length();
                }else{
                        getFile(f);
                       
                }
                return s;
        }

作者: wo1026756529    时间: 2016-9-20 23:56
可以参考23天的课件
作者: 风轻云淡139    时间: 2016-9-20 23:59
应该多看看老师的代码
作者: 荔荔舟    时间: 2016-9-21 00:15
你那个递归应该先获取该文件夹路径下所有的文件和文件夹,用listFiles()方法,可以得到一个File类型的数组。然后遍历这个集合,如果是文件获取长度,如果是文件夹,就递归调用getFile方法。最好看看23天的视频课
作者: 读书可以当饭吃    时间: 2016-9-21 11:20
你这样容易造成死循环啊,假设你getFile(File f)里传入了一个E盘下的文件夹f,判断f不是文件,执行else语句getFile(f),又把f传进去了,又判断f不是文件,又else,无限循环,那就if和else两个在那玩咯,已经没你什么事了




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