【Java】获取目录下文件信息

【Java】获取目录下文件信息

需求

输入路径,列出该路径下的是目录还是普通文件、文件名、大小及修改时间,统计文件与文件夹个数,前面标上序号

效果

效果(一)
效果(二)

代码

package com.cxl;

import java.io.File;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;

//输入路径,列出该路径下的是目录还是普通文件、文件名、大小及修改时间,统计文件与文件夹个数,前面标上序号
public class Demo28_Filelist {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.print("请输入路径名:");
        String path = sc.nextLine();
        //创建文件对象
        File src = new File(path);
        //输出结果
        System.out.println(src.getAbsolutePath()+"下的文件信息显示如下");
        System.out.print("序号\t\t");
        System.out.print("文件类型\t\t");
        System.out.print("文件名\t\t\t\t\t\t\t");
        System.out.print("文件大小(字节)\t\t");
        System.out.println("最后修改时间");
        System.out.println("===================================================================================================");
        //调用获取文件信息方法
        fileInfo(path);
    }
    //获取文件信息
    private static void fileInfo(String path) {
        int fileNum = 0;
        int dirNum = 0;
        //时间输出模板
        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        File src = new File(path);
        //创建数组存储该目录下文件信息
        File[] files = src.listFiles();
        for (int i = 0; i < files.length; i++) {
            //输出序号
            System.out.printf("%-9d",i+1);
            //判断文件是否为文件夹,获取文件大小
            if (files[i].isDirectory()){
                System.out.print("目录\t\t");
                System.out.printf("%-36s",files[i].getName());   //获取文件名
                System.out.printf("%-16s","-");
                dirNum++;
            }else {
                System.out.print("文件\t\t");
                System.out.printf("%-35s",files[i].getName());
                System.out.printf("%-17s",files[i].length());  //获取文件大小
                fileNum++;
            }
            //输出文件名
            //获取文件修改时间
            long modify = files[i].lastModified();
            //将时间封装为Date对象,以给定模板输出
            Date date = new Date(modify);
            System.out.print(format.format(date));
            //完成一行输出,换行
            System.out.println();
        }
        System.out.println("===================================================================================================");
        //输出总数
        System.out.println("共有 "+fileNum+" 个文件,"+dirNum+" 个文件夹");

    }

}