基于java的仿DOS文件管理

该博客介绍了一个基于Java的仿DOS文件管理系统,实现了包括cd、copy、del、dir、mkdir、type等命令。系统利用java的File类进行操作,详细描述了每个命令的实现过程和注意事项,如在copy命令中处理多文件路径的分割问题。作者强调通过实践学习带来的乐趣,并提到项目仍有待完善。
摘要由CSDN通过智能技术生成

FileSystemDOS

这是一个基于java的简单的仿DOS文件管理系统
使用了java中File的

实现的功能

  • 实现 cd 命令 ,支持参数选项
  • 实现 mkdir 命令,支持参数选项
  • 实现 copy 复制命令,支持参数选项
  • 实现 del 删除命令,支持参数选项
  • 实现 dir 列出当前路径的子目录和文件,支持参数选项
  • 实现 type 查看文件

大致编写的流程

  1. 确定命令接口Command
  2. 编写帮助Help
  3. 写FileController控制流程
  4. 对着流程一个一个实现命令
  • 先编写每个命令的help方法
  • 然后在编写excute方法
  • 初步测试
  1. 最后进行简单测试

定义接口Command


/**
 * @time 2019年8月6日
 * @instruction
 * 命令
 */
public interface Command {
   
	
	/**
	 * 命令未找到
	 */
	final int NOTFINDCOMMAND = -1;
	
	/**
	 * 参数未找到
	 */
	final int NOTFINDSECONDE = -2;
	
	/**
	 * 语法异常
	 */
	final int ERRORCOMMAND = -3;
	
	/**
	 * 执行成功
	 */
	final int SUCCESS = 1;
	
	/**
	 * 未完成
	 */
	final int UNDONE = 0;
	
	/**
	 * 不可读
	 */
	final int DONTREAD = 2;

	/**
	 * 执行出错
	 */
	final int ERROR = 3;
	
	/**
	 * 不是目录
	 */
	final int NOTADIRECTORY = 4;
	
	/**
	 * 执行命令
	 */
	int excute(String[] command);
	
	/**
	 * 命令的帮助
	 */
	void help();
	
}

定义了接口状态常量,每个命令都有的执行方法和帮助方法

ps:接口中的命令执行状态常量是逐渐添加的,编写具体命令时需要用到的状态然后再添加

帮助命令Help

/**
 * @time 2019年8月9日
 * @instruction
 * 帮助命令
 */
public class Help implements Command {
   

	public int excute(String[] command) {
   
        //设置状态为未完成
		int i = Command.UNDONE;
        //用户只输入help,给出帮助概述
		if(command.length == 1) {
   
			help();
			i = Command.SUCCESS;
		}else if(command.length > 2){
   
            //如果参数多于两个,那么命令错误
			i = Command.ERRORCOMMAND;
		}else {
   
            //传入,执行对应命令
			switch(command[1]) {
   
			case "cd":
				new Cd().help();
				break;
			case "dir":
				new Dir().help();
				break;
			case "mkdir":
				new Mkdir().help();
				break;
			case "copy":
				new Copy().help();
				break;
			case "del":
				new Del().help();
				break;
			case "type":
				new Type().help();
				break;
			case "help":
				help();
			default:
				i = Command.NOTFINDSECONDE;
				return i;
			}
            //最后执行成功
			i = Command.SUCCESS;
		}
		return i;
	}

	/**
	 * 帮助文档的概述
	 */
	public void help() {
   
		StringBuilder str = new StringBuilder();
		str.append("-------------------------帮助-------------------------\n");
		str.append("命令格式:\n");
		str.append("命令名称 [参数][参数]\n\n");
		
		str.append("cd \t").append("显示当前目录名或改变当前目录。\n");
		str.append("dir \t").append("显示目录中的文件和子目录列表。\n");
		str.append("mkdir \t").append("创建目录\n");
		str.append("copy \t").append("将一份或多份文件复制到另一个位置。\n");
		str.append("del \t").append("删除一个或数个文件。\n");
		str.append("type \t").append("显示文本文件的内容\n");
		str.append("exit \t").append("退出\n");
		
		str.append("若想查看详细命令,请键入: \"help 命令名称\" 查看  \n");
		System.out.println(str);
	}

}

先大致的写了帮助概述,然后照着帮助把具体的每一条命令的对应文件建立出来(他们都实现了Command接口),最后写excute方法

控制流程FileController

import java.io.File;
import java.io.IOException;
import java.sql.Date;
import java.util.Map;
import java.util.Scanner;
import com.command.Command;
import com.command.impl.Cd;
import com.command.impl.Copy;
import com.command.impl.Del;
import com.command.impl.Dir;
import com.command.impl.Help;
import com.command.impl.Mkdir;
import com.command.impl.Type;
import com.utils.Init;

public class FileController {
   
	/**
	 * 当前基本路径
	 */
	public static String basePath;
	/**
	 * 当前用户
	 */
	static String user;
	
	/**
	 * 当前执行的命令
	 */
	Command CurrentCommand;
	
	Scanner in = new Scanner(System.in);
	
	
	public FileController() {
   
		//初始化,读配置文件
		basePath = Init.path;
		user = Init.user;
		CurrentCommand = null;
	}
	
	
	public void start() {
   
		System.out.println("欢迎来到 DosfileSystem! 如果需要帮助,请键入 help");
		controller();
		
	}
	
	/**
	 * 格式化命令输入
	 * @return
	 */
	public String[] getCinFormat() {
   
		System.out.print(basePath + " #" + user + "#:");
		String parse = in.nextLine(); //输入
		String[] command = parse.trim().split(" ");
		command[0] = command[0].toLowerCase();//全部转换到小写
		return command;
	}
	
	/**
	 * 控制中枢
	 */
	public void controller() {
   
		
		while(true) {
   
			String[] command = getCinFormat();
			switch(command[0]) {
   
			case "cd":
				CurrentCommand = new Cd();
				break;
			case "dir":
				CurrentCommand = new Dir();
				break;
			case "mkdir":
				CurrentCommand = new Mkdir();
				break;
			case "copy":
				CurrentCommand = new Copy();
				break;
			case "del":
				CurrentCommand = new Del();
				break;
			case "type":
				CurrentCommand = new Type();
				break;
			case "exit":
				System.exit(0);//退出
			case "help":
				CurrentCommand = new Help();
				break;
			default:
				System
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值