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

本文档介绍了一个Java命令行文件操作程序fsops.jar的实现,支持创建目录、删除目录/文件、查看目录内容、帮助及程序信息等功能。程序通过接收命令行参数执行相应操作,如`java.exe-jar fsops.jar [CMD] [ARGS]`。代码中包含了Main.java和JarUtil.java的主要功能实现,提供了详细的错误提示和帮助信息。
摘要由CSDN通过智能技术生成
实验要求

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

Windows 平台

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

直接上效果图吧
新建目录
请添加图片描述
删除目录或文件
请添加图片描述
创建文件和删除文件
请添加图片描述
帮助
在这里插入图片描述
关于
请添加图片描述

代码

比较简单的实验,直接放代码。所有功能都支持多文件多目录操作,也设置了错误提示。功能应该比较全面,有一个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 <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课好水我好爱。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值