A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

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;
        }

4 个回复

倒序浏览
可以参考23天的课件
回复 使用道具 举报
应该多看看老师的代码
回复 使用道具 举报
你那个递归应该先获取该文件夹路径下所有的文件和文件夹,用listFiles()方法,可以得到一个File类型的数组。然后遍历这个集合,如果是文件获取长度,如果是文件夹,就递归调用getFile方法。最好看看23天的视频课
回复 使用道具 举报
你这样容易造成死循环啊,假设你getFile(File f)里传入了一个E盘下的文件夹f,判断f不是文件,执行else语句getFile(f),又把f传进去了,又判断f不是文件,又else,无限循环,那就if和else两个在那玩咯,已经没你什么事了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马