实验要求
点点关注点点关注点点关注点点关注点点关注点点关注点点关注点点关注点点关注点点关注点点关注点点关注点点关注点点关注点点关注点点关注点点关注点点关注点点关注点点关注点点关注点点关注点点关注点点关注点点关注点点关注点点关注点点关注点点关注点点关注点点关注点点关注
设计实现一个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课好水我好爱。