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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

public class Test5 {

        /**
         * 从键盘接收一个文件夹路径,要求打印所有的.java文件
         * 如果文件夹里面还有文件夹.那么就要用递归了
         * @param args
         * 分析:
         * 从键盘接收文件夹路径
         * 有三种可能,
         *  1.不存在.
         *  2.文件路径.
         *  3.文件夹路径
         *  
         *  打印所有的.java文件名
         *  1.获取该文件夹路径所有的file对象数组
         *  2.遍历数组,对每一个文件或者文件夹判断.
         *  3.如果是文件,并且后缀是.java就打印
         *  4.如果是文件夹,就递归调用
         */
        public static void main(String[] args) {
                File dir = getDir();
                printJavaFile(dir);
        }
        /*
         * 获取键盘录入的文件夹路径
         * 1.返回值类型File
         * 2.不需要有参数
         */
        public static File getDir() {
                Scanner sc = new Scanner(System.in);
                System.out.println("请输入一个文件夹路径");
                while(true) {
                        String line = sc.nextLine();
                        File file = new File(line);
                        if(!file.exists())
                                System.out.println("你输入的不是一个路径,请重新输入:");
                        else if(file.isFile())
                                System.out.println("您输入的是一个文件,请重新录入");
                        else
                                return file;
                }
        }

        /*
         * 获取文件夹路径下所有.java
         * 1.返回值类型 void
         * 2.参数列表 File dir
         */
        public static void printJavaFile(File dir) {
                //注意.如果没有权限读文件夹,会出空指针异常  比如 直接输出c盘
                File[] subFiles = dir.listFiles();
                if(subFiles == null)
                        return;
                for (File file : subFiles) {
                        //3
                        if(file.isFile() && file.getName().endsWith(".java"))
                                System.out.println(file);
                        else if(file.isDirectory())
                                //其他类型
                                printJavaFile(file);
                }
        }
}

评分

参与人数 1黑马币 +20 收起 理由
ynztlxdeai + 20 赞一个!

查看全部评分

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马