package com.loaderman.test; import java.io.File; import java.io.FileReader; import java.util.Scanner; public class Test { /** * 需求:從鍵盤輸入接收一個文件夾路徑,打印出該文件夾下所有的.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); } } } }