SCAU 显示目录或文件的属性

作业5:显示目录或文件的属性

题目类别: B作业

关键字: File类应用 面向对象

内容要求:

编写程序,项目名称为FileProperties

实现功能:

(1) 从键盘输入一个字符串,表示一个目录名称或文件名称

(2) 如果该字符串是一个目录的名称,则一个运行实例如下图,其中:

目录大小是指:该目录中所有文件的大小之和(包含所有层次的子目录中的文件)

包含文件和包含目录均指:该目录中所有文件的个数或所有子目录个数(包含所有层次的子目录及其中的文件)

(3) 如果该字符串是一个文件的名称,则一个运行实例如下图:

其中,目标类型的括号中要根据文件的实际扩展名获取,如文件名中无扩展名,则显示: 文件(无)

(4) 如果该字符串不是一个目录的名称也不是一个文件的名称,则一个运行实例如下图:

JavaSourceCounter

package com.company;

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

public class JavaSourceCounter {
     
    private File folder;
    private int numberOfJavaFiles;
    private long totalSizeOfJavaFiles;
    private long totalFolder;
    private StringBuilder builder = new StringBuilder();

    public JavaSourceCounter(File folder) {
     
        this.folder = folder;
    }

    public void count() {
     
        numberOfJavaFiles = 0;
        totalSizeOfJavaFiles = 0;
        totalFolder = 0;
        builder = new StringBuilder();
        parse(folder);
    }

    private void parse(File folder) {
     
        File[] items = folder.listFiles();
        for (File item : items) {
     
            if (item.isFile()) {
     
                this.numberOfJavaFiles++;
                this.totalSizeOfJavaFiles += item.length();
            }
            else if(item.isDirectory()){
     
                this.totalFolder ++;
            }
        }
    }

    String getTime(File folder){
     
        SimpleDateFormat sdf = new SimpleDateFormat("YYYY-MM-dd HH:mm:ss");
        String time = sdf.format(new Date(folder.lastModified()));
        builder.append(String.format("%s", time));
        builder.append('\n');
        return builder.toString();
    }

    public int getNumberOfJavaFiles() {
     
        return numberOfJavaFiles;
    }

    public long getTotalSizeOfJavaFiles() {
     
        return totalSizeOfJavaFiles;
    }

    public long getTotalFolder(){
     
        return totalFolder;
    }

}

Main

package com.company;

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

public class Main {
     

    public static void main(String[] args) {
     

        Scanner cin = new Scanner(System.in);
        String files;
        System.out.println("输入一个文件或者目录名:");
        files = cin.nextLine();
        File file = new File(files);

        if(file.isDirectory()) {
     
            JavaSourceCounter counter = new JavaSourceCounter(file);
            counter.count();
            System.out.printf("目标名称:        %s\n", file.getName());
            System.out.println("----------------------------------------");
            System.out.println("目标类型:        目录");
            System.out.printf("所在位置:         %s\n", file.getParent());
            System.out.printf("目录大小:        %d\n", counter.getTotalSizeOfJavaFiles());
            System.out.printf("修改时间:        %s", counter.getTime(file));
            System.out.printf("包含文件:        %d\n", counter.getNumberOfJavaFiles());
            System.out.printf("包含目录:        %d\n", counter.getTotalFolder());
            System.out.println("目标属性:");
            System.out.println("         可写:" + file.canWrite());
            System.out.println("         可读:" + file.canRead());
            System.out.println("         可运行:" + file.canExecute());
            System.out.println("         隐藏:" + file.isHidden());
        }

        else if(file.isFile()){
     
            SimpleDateFormat sdf = new SimpleDateFormat("YYYY-MM-dd HH:mm:ss");
            String time = sdf.format(new Date(file.lastModified()));
            String fileName = file.getName();
            String suffix = fileName.substring(fileName.lastIndexOf(".") + 1);

            System.out.printf("目标名称:        %s\n", file.getName());
            System.out.println("----------------------------------------");
            System.out.printf("目录类型:       文件.%s\n",suffix);
            System.out.printf("所在位置:         %s\n", file.getAbsolutePath());
            System.out.printf("修改时间:        %s\n",time);
            System.out.printf("文件大小:        %d\n",file.length());
            System.out.println("目标属性:");
            System.out.println("         可写:" + file.canWrite());
            System.out.println("         可读:" + file.canRead());
            System.out.println("         可运行:" + file.canExecute());
            System.out.println("         隐藏:" + file.isHidden());
        }
        else {
     
            System.out.println(file+"不是一个文件或者目录名!");
        }
        cin.close();
    }
}

你可能感兴趣的:(Java基础)