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