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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© hong774997735 中级黑马   /  2015-9-26 19:50  /  473 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

package com.heima.test;

import java.io.File;
import java.io.FileReader;
import java.util.Scanner;

public class Test5 {

        /**
         * 需求:从键盘输入接收一个文件夹路径,打印出该文件夹下所有的.java文件名
         *
         * 分析:
         * 从键盘接收一个文件夹路径
         * 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 dir = new File(line);                                                //封装成File对象
                        if(!dir.exists()) {
                                System.out.println("您录入的文件夹路径不存在,请重新录入");
                        }else if(dir.isFile()) {
                                System.out.println("您录入的是文件路径,请重新录入文件夹路径");
                        }else {
                                return dir;
                        }
                }
        }
        /*
         * 获取文件夹路径下的所.java文件
         * 1,返回值类型 void
         * 2,参数列表File dir
         */
        public static void printJavaFile(File dir) {
                //1,获取到该文件夹路径下的所有的文件和文件夹,存储在File数组中
                File[] subFiles = dir.listFiles();
                //2,遍历数组,对每一个文件或文件夹做判断
                for (File subFile : subFiles) {
                        //3,如果是文件,并且后缀是.java的,就打印
                        if(subFile.isFile() && subFile.getName().endsWith(".java")) {
                                System.out.println(subFile);
                        //4,如果是文件夹,就递归调用
                        }else if (subFile.isDirectory()){
                                printJavaFile(subFile);
                        }
                }
        }
}
这个关于递归的老师说是自己调用自己,我有点不懂了!!!能简单的谈一下学习这需要注意那方面啊?

评分

参与人数 1黑马币 +20 收起 理由
哈哈哈欠虫 + 20 很给力!

查看全部评分

0 个回复

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