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