如何用命令行写java程序_如何用java实现doc命令行

如何用java实现doc命令行, dir显示当前所有目录下的文件 cd 文件目录 进入到该目录 cd ..退到上级目录,一面是我写的代码,调试了。 不过有点小bug就是当你进去的是文件就会提示空指针异常,而不是像doc那样提示“不是目录”,但不会退出,有想修复这个bug的可以修改 package cmd; import java.util.*; import java.io.*; /* * 用java实现doc命令行 * dir显示当初所有目录下的文件 * cd 文件目录 进入到该目录 * cd 。。退到上级目录 * 简要思路; * Class.forName(),传个类名进去实现多态操作 * 用Stack记录进入的目录,后进先退出 * 如有其它更好的方法可以相互探讨 */ public class CMDTest { /** * @param args * @throws Exception * @throws IllegalAccessException * @throws InstantiationException */ public static void main(String[] args) throws InstantiationException, IllegalAccessException, Exception { // TODO Auto-generated method stub Stack stack=new Stack();//栈记录路径,后进先弹出 Scanner scan=new Scanner(System.in); stack.push("E:/");//把磁盘E路径压入栈,可以改成其他的如c,d盘符 while(true){ if(stack.isEmpty()){ stack.push("E:/");//防止cd 。。退出到栈空 } System.out.print(stack.peek().toString()+">"); String srcName=scan.nextLine(); String[] paths=srcName.split("\\s+",2);//把命令语句以空白切成两个,如 cd workspace 切成字符数组cd和workspace Command com=(Command) Class.forName("cmd."+paths[0].toUpperCase().trim()).newInstance();//生成执行命令,多态 if(paths.length>1){//如果输入如cd workspace,则把workspace传入para com.execute(stack,paths[1]); } else com.execute(stack); } } } //cmd命令接口 interface Command{ public void execute(Stack stack,String... para);//栈可以记录进入目录路径,para作为可变参数 } //dir 命令显示某个目录文件、 class DIR implements Command{ @Override public void execute(Stack stack, String... para) { if(para.length>0) stack.push((stack.peek().toString()+para[0]+"/"));//上一个目录+传进的目录 File dir=new File(stack.peek().toString());//此目录的文件 if(!dir.exists()){ System.out.println("该目录不存在"); } File[] files=dir.listFiles(); for(File file:files){ System.out.println(file);//显示该目录下所有的文件 } }} //cd workspace进入某个目录, cd ..退出上一个父目录 class CD implements Command{ @Override public void execute(Stack stack, String... para) { if(para.length>0){ // TODO Auto-generated method stub if(para[0].equals("..".trim())){//cd .. stack.pop();//出栈,退出上一个目录 } else{ stack.push(stack.peek().toString()+para[0]+"/");//上一个目录+传进的目录,即把当前目录压入栈 //System.out.println(stack.peek().toString()); } } } }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值