Java 获取指定目录下的所有文件和目录
前言
本片我将为大家讲解如何获取用户输入的文件路径,获取指定路径以及路径下所有的文件和目录,而且可以统计文件和目录的数量。
提示:以下是本篇文章正文内容,下面案例可供参考
一、主要的类
- 其实涉及到文件和目录,一般都是与Java的IO类相关的,但是本章却没有涉及到IO,而是涉及到了另一个类File。他可以对我们的文件和目录进行管理。
- java.io.File类主要用于描述文件或目录路径的抽象表示信息,可以获取文件或目录的特征信息,如:大小等。
二、实现代码
2.1 首先我们可以先在类中中写一个主函数main,然后将查询所有文件和目录的代码单独提炼出来,写成一个方法,在main中调用。
import java.io.File;
import java.util.Arrays;
import java.util.Scanner;
/**
* @author 云梦归遥
* @date 2021/11/24 11:26
* @description 获取指定路径下所有的文件,包括子目录中的所有嵌套目录和文件,而且统计文件和目录的数量。
*/
public class FileTest {
public static void main(String[] args) {
System.out.println("请输入你想要查询的文件路径:");
Scanner sc = new Scanner(System.in);
// 如果文件路径名有空格会发生异常,需要使用 nextLine 去获取输入的内容
String pathName = sc.nextLine();
System.out.println(pathName);
File file = new File(pathName);
System.out.println("当前路径的文件是否存在:" + file.exists());
System.out.println("文件名称:" + file.getName());
System.out.println("文件的长度:" + file.length());
System.out.println("文件最后一次修改的时间:" + file.lastModified());
System.out.println("文件的绝对路径:" + file.getAbsolutePath());
System.out.println("=============================");
}
}
2.2 然后我们开始写查询展示所有文件和目录的方法
-
在这里我们也用到了递归的思想,每次总是传入一个 File类型的参数作为我们要遍历的对象(这是根据方法内部的条件判断判断出来的,实际上是一个目录)
-
除此之外,两个成员变量也是帮助我们分别进行统计文件数量和目录数量的。
public static void show(File file) {
File[] files = file.listFiles();
if (null != files) {
for (int i = 0; i < files.length; i++) {
String result = files[i].isFile()? "一个文件": "一个目录";
System.out.println(files[i] + "\t" + result);
if ("一个目录".equals(result)) {
FileTest.directoryNum++;
show(files[i]);
} else {
FileTest.fileNum++;
}
}
}
}
2.3最终代码
-
在main方法中进行调用 方法,然后代码就可以顺利的执行了
import java.io.File;
import java.util.Arrays;
import java.util.Scanner;
/**
* @author 云梦归遥
* @date 2021/11/24 11:26
* @description 获取指定路径下所有的文件,包括子目录中的所有嵌套目录和文件,而且统计文件和目录的数量。
*/
public class FileTest {
public static int fileNum = 0;
public static int directoryNum = 0;
public static void show(File file) {
File[] files = file.listFiles();
if (null != files) {
for (int i = 0; i < files.length; i++) {
String result = files[i].isFile()? "一个文件": "一个目录";
System.out.println(files[i] + "\t" + result);
if ("一个目录".equals(result)) {
FileTest.directoryNum++;
show(files[i]);
} else {
FileTest.fileNum++;
}
}
}
}
public static void main(String[] args) {
System.out.println("请输入你想要查询的文件路径:");
Scanner sc = new Scanner(System.in);
// 如果文件路径名有空格会发生异常,需要使用 nextLine 去获取输入的内容
String pathName = sc.nextLine();
System.out.println(pathName);
File file = new File(pathName);
System.out.println("当前路径的文件是否存在:" + file.exists());
System.out.println("文件名称:" + file.getName());
System.out.println("文件的长度:" + file.length());
System.out.println("文件最后一次修改的时间:" + file.lastModified());
System.out.println("文件的绝对路径:" + file.getAbsolutePath());
System.out.println("=============================");
// 循环遍历当前目录下所有的文件,包括子目录中的所有文件
show(file);
System.out.println("=============================");
System.out.println("总计:文件数量:" + FileTest.fileNum + "; 目录数量:" + FileTest.directoryNum);
}
}
三,运行结果的展示,截图
-
输入要进行查询的文件路径
-
输出的结果
-
真实的目录情况
相关文章
暂无评论...