<>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); } }
<>三,运行结果的展示,截图
*
<>输入要进行查询的文件路径
*
<>输出的结果
*
<>真实的目录情况
*