Java实验04-命令行执行Jar包Java命令行文件操作程序设计

实验要求

点点关注点点关注点点关注点点关注点点关注点点关注点点关注点点关注点点关注点点关注点点关注点点关注点点关注点点关注点点关注点点关注点点关注点点关注点点关注点点关注点点关注点点关注点点关注点点关注点点关注点点关注点点关注点点关注点点关注点点关注点点关注点点关注
设计实现一个Java 命令行文件操作程序fsops.jar。命令行操作模式,程序的基本使用方法如下

Windows 平台

C:> java.exe -jar fsops.jar [CMD] [ARGS]

直接上效果图吧
新建目录
请添加图片描述
删除目录或文件
请添加图片描述
创建文件和删除文件
请添加图片描述
帮助
Java实验04-命令行执行Jar包Java命令行文件操作程序设计_第1张图片
关于
Java实验04-命令行执行Jar包Java命令行文件操作程序设计_第2张图片

代码

比较简单的实验,直接放代码。所有功能都支持多文件多目录操作,也设置了错误提示。功能应该比较全面,有一个bug在args中有空格字符时会有问题,但和程序无关。是程序识别参数的固有方法。大家可以自己探索。
Main.java

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
/**
 * Description:Java实验3
 * @date:2021.11.11
 * @author:Karthus77
 */
public class Main {
    public static void main(String[] args) throws IOException {
       if(args.length!=0) {
           String cmd = args[0];
           List<String> list = new ArrayList<String>();
           for (int i = 1; i < args.length; i++)
           {
               list.add(args[i]);
           }
           switch (cmd) {
               case "mkdir" -> JarUtil.mkdir(list.toArray(new String[0]));
               case "nfile" -> JarUtil.nFile(list.toArray(new String[0]));
               case "ls" -> JarUtil.ls(list.toArray(new String[0]));
               case "rm"->JarUtil.rm(list.toArray(new String[0]));
               case "help" -> JarUtil.help();
               case "self" -> JarUtil.self();
           }
       }
       else
       {
           System.out.println("请输入java.exe -jar fsop.jar [CMD] [ARGs]");
       }
    }
}

JarUtil.java

import java.io.*;
import java.nio.file.Files;
import java.nio.file.LinkOption;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.attribute.BasicFileAttributeView;
import java.nio.file.attribute.BasicFileAttributes;
import java.text.SimpleDateFormat;
import java.util.Date;

public  class JarUtil {
    public static void mkdir(String[] args) {
        int n = args.length;
        for (int i = 0; i < n; i++) {
            File file = new File(args[i]);
            boolean y = file.mkdir();
            if (!y) System.out.println("目录创建失败:目录已存在或路径有误");
            else System.out.println("目录创建成功 " + args[i]);
        }
    }

    public static void help() {
        System.out.println("用法:java [options] <主类> [args...]\n" +
                "           (执行类)\n" +
                "   或  java [options] -jar  [args...]\n" +
                "           (执行 jar 文件)\n" +
                "   或  java [options] -m <模块>[/<主类>] [args...]\n" +
                "       java [options] --module <模块>[/<主类>] [args...]\n" +
                "           (执行模块中的主类)\n" +
                "   或  java [options] <源文件> [args]\n" +
                "           (执行单个源文件程序)");
        System.out.println("其中选项包括:");
        System.out.println("\t--mkdir<创建目录/路径>");
        System.out.println("\t--nfile<要创建的文件名称>");
        System.out.println("\t--rm<要删除的文件或目录>");
        System.out.println("\t--ls<目录下的文件和子目录>");
        System.out.println("\t--help<将此帮助消息输出到输出流>");
        System.out.println("\t--self<程序信息>");
    }

    public static void nFile(String[] arg) {
        try {
            for (int i = 0; i < arg.length; i++) {
                File file = new File(arg[i]);
                if (file.createNewFile())
                    System.out.println("文件创建成功!");
                else
                    System.out.println("创建失败,该文件已经存在");
            }
        } catch (Exception e) {
            e.printStackTrace();
            System.out.println("请重试");
        }
    }

    public static void rm(String[] args) {
        try {
            for (int i = 0; i < args.length; i++) {
                File file = new File(args[i]);
                if (file.delete()) {
                    System.out.println(file.getName() + "文件已被删除!");
                } else {
                    System.out.println("删除失败!请检查文件是否存在或文件是否已经打开");
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public static void self() {
        System.out.println("\t--软件名称:某Jar包程序");
        System.out.println("\t--软件版本:Beta 1.0.0");
        System.out.println("\t--编写日期:2021.11.11");
        System.out.println("\t--开发人员:黄博斌");
    }

    public static void ls(String[] args) throws IOException {
        String dir=args[0];
        File file=new File(dir);
        String[] s=file.list();
        if(s!=null)
        {
            SimpleDateFormat simpleDateFormat =  new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            System.out.println("Directory  "+dir);
            System.out.println("\t-------------------------------------------------------------");
            System.out.println("Name                Time Created            Time modified        Type");
            for(int i=0;i< s.length;i++)
            {
                File file1=new File(dir+"\\"+s[i]);
                char type;
                if(file1.isDirectory())
                    type='d';
                else
                    type='f';
                String createdTime=getCreatedTime(file1.getAbsolutePath());
                Date creatDate = new Date(Long.parseLong(createdTime));
                Date lastDate=new Date(file1.lastModified());
                System.out.printf("%-20s",file1.getName());
                System.out.printf("%-24s",simpleDateFormat.format(creatDate));
                System.out.printf("%-21s",simpleDateFormat.format(lastDate));
                System.out.printf("%-2c\n",type);

            }
        }
    }
    public static String getCreatedTime(String filePath)
    {
        Path path = Paths.get(filePath);
        BasicFileAttributeView basicview = Files.getFileAttributeView(path, BasicFileAttributeView.class, LinkOption.NOFOLLOW_LINKS);
        BasicFileAttributes attr;
        try
        {
            attr = basicview.readAttributes();
            long k=attr.creationTime().toMillis();
            return String.valueOf(k);
        } catch (Exception e)
        {
            e.printStackTrace();
        }
        return null;
    }


}

打包方法自己去网上查吧,比较简单,我用的IDEA就不放上来了
阿巴阿巴阿巴,Java课好水我好爱。

你可能感兴趣的:(Java实验课,java,开发语言,后端)