📄 main.cs
字号:
using System;
using System.IO;
namespace FSM
{
/// <summary>
/// Class1 的摘要说明。
/// </summary>
class main
{
/// <summary>
/// 应用程序的主入口点。
/// </summary>
[ STAThread]
static void Main()
{
Console.Write(@"模拟 DOS 文件管理系统 V1.0 Powered by Microsot.net");
Console.WriteLine("");
cFile f = new cFile();
cDirectory d = new cDirectory();
Console.WriteLine("\n系统可用命令如下:\n");
Console.Write( "设置权限:\tattrib \t[ 文件名(不含空格)] [ -h | -r | -s | +h | +r | +s ]\n");
Console.Write( "改变目录:\tcd \t[ \\|..|文件目录(不含空格)]\n");
Console.Write( "创建文件:\tcf \t[ 文件名(不含空格)]\n");
Console.Write( "复制文件:\tcopy \t[ 源文件(不含空格)] [ 目标文件(不含空格)]\n");
Console.Write( "删除文件:\tdel \t[ 文件名(不含空格)]\n");
Console.Write( "删除目录:\tdeltree [ 目录名(不含空格)]\n");
Console.Write( "查看文件列表:\tdir \t[ |目录名(不含空格)] \n");
Console.Write( "编辑文件:\tedit \t[ 文件名(不含空格)]\n");
Console.Write( "退出系统:\texit \n");
Console.Write( "创建目录:\tmd \t[ 目录名(不含空格)]\n");
Console.Write( "移动文件:\tmov \t[ 源文件名(不含空格)] [ 目标文件名(不含空格)]\n");
Console.Write( "移动目录:\tmovd \t[ 源目录名(不含空格)] [ 目标目录名(不含空格)]\n");
Console.Write( "删除目录:\trd \t[ 目录名(不含空格)]\n");
Console.Write( "文件改名:\tren \t[ 原文件名(不含空格)] [ 新文件名(不含空格)]\n");
Console.Write( "运行程序:\trun \t[ 文件名(不含空格)]\n");
Console.Write( "查看文件:\ttype \t[ 文件名(不含空格)]\n");
Console.Write( "复制目录:\txcopy \t[ 源目录(不含空格)] [ 目标目录(不含空格)]\n\n");
Console.WriteLine("版权所有:张镭、王松乔, 重庆大学计算机学院 2000 级 3 班\n");
while( true )
{
string curdir = Directory.GetCurrentDirectory();
int argscount = 0;
Console.Write( curdir + ">");
System.Collections.ArrayList args = new System.Collections.ArrayList();
args.Add("");
char[ ] trim = new char[ ]{' '};
DirectoryInfo di;
char[ ] cmd = Console.ReadLine().TrimStart(trim).ToCharArray();
for( int i = 0; i < cmd.Length; i++ )
{
if( cmd[ i] != ' ')
{
args[ argscount] = String.Concat( args[ argscount],cmd[ i]);
}
if( (i+1) <= (cmd.Length -1) )
{
if( cmd[ i] == ' ' & cmd[ i+1] != ' ' )
{
argscount ++;
args.Add("");
}
}
}
switch( args[ 0].ToString().Trim().ToLower() )
{
case "help"://改变当前目录
{
Console.WriteLine("\n系统可用命令如下:\n");
Console.Write( "设置权限:\tattrib \t[ 文件名(不含空格)] [ -h | -r | -s | +h | +r | +s ]\n");
Console.Write( "改变目录:\tcd \t[ \\|..|文件目录(不含空格)]\n");
Console.Write( "创建文件:\tcf \t[ 文件名(不含空格)]\n");
Console.Write( "复制文件:\tcopy \t[ 源文件(不含空格)] [ 目标文件(不含空格)]\n");
Console.Write( "删除文件:\tdel \t[ 文件名(不含空格)]\n");
Console.Write( "删除目录:\tdeltree [ 目录名(不含空格)]\n");
Console.Write( "查看文件列表:\tdir \t[ |目录名(不含空格)] \n");
Console.Write( "编辑文件:\tedit \t[ 文件名(不含空格)]\n");
Console.Write( "退出系统:\texit \n");
Console.Write( "创建目录:\tmd \t[ 目录名(不含空格)]\n");
Console.Write( "移动文件:\tmov \t[ 源文件名(不含空格)] [ 目标文件名(不含空格)]\n");
Console.Write( "移动目录:\tmovd \t[ 源目录名(不含空格)] [ 目标目录名(不含空格)]\n");
Console.Write( "删除目录:\trd \t[ 目录名(不含空格)]\n");
Console.Write( "文件改名:\tren \t[ 原文件名(不含空格)] [ 新文件名(不含空格)]\n");
Console.Write( "运行程序:\trun \t[ 文件名(不含空格)]\n");
Console.Write( "查看文件:\ttype \t[ 文件名(不含空格)]\n");
Console.Write( "复制目录:\txcopy \t[ 源目录(不含空格)] [ 目标目录(不含空格)]\n\n");
Console.WriteLine("版权所有:张镭、王松乔, 重庆大学计算机学院 2000 级 3 班\n");
break;
}
case "/?"://改变当前目录
{
Console.WriteLine("\n系统可用命令如下:\n");
Console.Write( "设置权限:\tattrib \t[ 文件名(不含空格)] [ -h | -r | -s | +h | +r | +s ]\n");
Console.Write( "改变目录:\tcd \t[ \\|..|文件目录(不含空格)]\n");
Console.Write( "创建文件:\tcf \t[ 文件名(不含空格)]\n");
Console.Write( "复制文件:\tcopy \t[ 源文件(不含空格)] [ 目标文件(不含空格)]\n");
Console.Write( "删除文件:\tdel \t[ 文件名(不含空格)]\n");
Console.Write( "删除目录:\tdeltree [ 目录名(不含空格)]\n");
Console.Write( "查看文件列表:\tdir \t[ |目录名(不含空格)] \n");
Console.Write( "编辑文件:\tedit \t[ 文件名(不含空格)]\n");
Console.Write( "退出系统:\texit \n");
Console.Write( "创建目录:\tmd \t[ 目录名(不含空格)]\n");
Console.Write( "移动文件:\tmov \t[ 源文件名(不含空格)] [ 目标文件名(不含空格)]\n");
Console.Write( "移动目录:\tmovd \t[ 源目录名(不含空格)] [ 目标目录名(不含空格)]\n");
Console.Write( "删除目录:\trd \t[ 目录名(不含空格)]\n");
Console.Write( "文件改名:\tren \t[ 原文件名(不含空格)] [ 新文件名(不含空格)]\n");
Console.Write( "运行程序:\trun \t[ 文件名(不含空格)]\n");
Console.Write( "查看文件:\ttype \t[ 文件名(不含空格)]\n");
Console.Write( "复制目录:\txcopy \t[ 源目录(不含空格)] [ 目标目录(不含空格)]\n\n");
Console.WriteLine("版权所有:张镭、王松乔, 重庆大学计算机学院 2000 级 3 班\n");
break;
}
case "cd"://改变当前目录
{
if( args.Count != 2 )
{
Console.Write( @"命令格式: cd [ \|..|文件目录(不含空格)]\n\n");
break;
}
if( Directory.Exists(args[ 1].ToString()) )
{
Directory.SetCurrentDirectory(args[ 1].ToString());
}
else
{
Console.Write( "目录'" + args[ 1] + "'不存在\n");
}
break;
}
case "cd.."://上一目录
{
if( args.Count != 1 )
{
Console.Write( @"命令格式: cd [ \|..|文件目录(不含空格)]\n\n");
break;
}
if( Directory.GetParent( Directory.GetCurrentDirectory()) != null )
{
string pardir = Directory.GetParent( Directory.GetCurrentDirectory()).FullName;
Directory.SetCurrentDirectory(pardir);
}
break;
}
case @"cd\"://根目录
{
if( args.Count != 1 )
{
Console.Write( @"命令格式: cd [ \|..|文件目录(不含空格)]\n\n");
break;
}
di = new DirectoryInfo(Directory.GetCurrentDirectory());
Directory.SetCurrentDirectory(di.Root.FullName);
break;
}
case "copy"://拷贝文件
{
if( args.Count != 3 )
{
Console.Write( "命令格式:copy [ 源文件(不含空格)] [ 目标文件(不含空格)]\n\n");
break;
}
f.Copy( args[ 1].ToString(), args[ 2].ToString() );
break;
}
case "del"://删除文件
{
if( args.Count != 2 )
{
Console.Write( "命令格式:del [ 文件名(不含空格)]\n\n");
break;
}
f.Delete( args[ 1].ToString());
break;
}
case "cf"://创建文件
{
if( args.Count != 2 )
{
Console.Write( "命令格式:cf [ 文件名(不含空格)]\n\n");
break;
}
f.Create( args[ 1].ToString());
break;
}
case "deltree"://删除目录树
{
if( args.Count != 2 )
{
Console.Write( "命令格式:deltree [ 目录名(不含空格)]\n\n");
break;
}
d.Delete( args[ 1].ToString());
break;
}
case "dir"://列文件名
{
if( args.Count > 2 )
{
Console.Write( "命令格式:dir | [ 目录名(不含空格)] \n\n");
break;
}
if( args.Count == 1 )
{
d.List( Directory.GetCurrentDirectory() );
}
else if( args.Count == 2)
{
d.List( args[ 1].ToString() );
}
break;
}
case "edit"://文本编辑
{
if( args.Count != 2 )
{
Console.Write( "命令格式:edit [ 文件名(不含空格)]\n\n");
break;
}
f.Edit( args[ 1].ToString());
break;
}
case "md"://建立子目录
{
if( args.Count != 2 )
{
Console.Write( "命令格式:md [ 目录名(不含空格)]\n\n");
break;
}
d.Create( args[ 1].ToString());
break;
}
case "mov"://移动文件
{
if( args.Count != 3 )
{
Console.Write( "命令格式:mov [ 源文件名(不含空格)] [ 目标文件名(不含空格)]\n\n");
break;
}
f.Move( args[ 1].ToString(), args[ 2].ToString() ) ;
break;
}
case "movd"://移动目录
{
if( args.Count != 3 )
{
Console.Write( "命令格式:movd [ 源目录名(不含空格)] [ 目标目录名(不含空格)]\n\n");
break;
}
d.Move( args[ 1].ToString(), args[ 2].ToString() ) ;
break;
}
case "rd"://删除目录
{
if( args.Count != 2 )
{
Console.Write( "命令格式:rd [ 目录名(不含空格)]\n\n");
break;
}
d.Delete( args[ 1].ToString());
break;
}
case "ren"://改变文件名
{
if( args.Count != 3 )
{
Console.Write( "命令格式:ren [ 原文件名(不含空格)] [ 新文件名(不含空格)]\n\n");
break;
}
f.ReName( args[ 1].ToString(), args[ 2].ToString() ) ;
break;
}
case "type"://显示文件内容
{
if( args.Count != 2 )
{
Console.Write( "命令格式:type [ 文件名(不含空格)]\n\n");
break;
}
f.Type( args[ 1].ToString());
break;
}
case "xcopy"://拷贝目录与文件
{
if( args.Count != 3 )
{
Console.Write( "命令格式:xcopy [ 源目录(不含空格)] [ 目标目录(不含空格)]\n\n");
break;
}
d.Copy( args[ 1].ToString(), args[ 2].ToString() );
break;
}
case "attrib"://设置文件属性
{
if( args.Count <= 2 )
{
Console.Write( "命令格式:attrib [ 文件名(不含空格)] [ -h | -r | -s | +h | +r | +s ]\n\n");
break;
}
args.RemoveAt(0);
args.TrimToSize();
string[ ] strargs = new string[ args.Count-1];
for( int i = 0; i < strargs.Length; i ++ )
{
strargs[ i] = args[ i+1].ToString();
}
f.SetAttribute( args[ 0].ToString(), strargs);
break;
}
case "run"://运行程序
{
if( args.Count != 2 )
{
Console.Write( "命令格式:run [ 文件名(不含空格)]\n\n");
break;
}
f.Run( args[ 1].ToString());
break;
}
case "exit"://退出程序
{
return;
}
default:
{
Console.WriteLine("\n系统可用命令如下:\n");
Console.Write( "设置权限:\tattrib \t[ 文件名(不含空格)] [ -h | -r | -s | +h | +r | +s ]\n");
Console.Write( "改变目录:\tcd \t[ \\|..|文件目录(不含空格)]\n");
Console.Write( "创建文件:\tcf \t[ 文件名(不含空格)]\n");
Console.Write( "复制文件:\tcopy \t[ 源文件(不含空格)] [ 目标文件(不含空格)]\n");
Console.Write( "删除文件:\tdel \t[ 文件名(不含空格)]\n");
Console.Write( "删除目录:\tdeltree [ 目录名(不含空格)]\n");
Console.Write( "查看文件列表:\tdir \t[ |目录名(不含空格)] \n");
Console.Write( "编辑文件:\tedit \t[ 文件名(不含空格)]\n");
Console.Write( "退出系统:\texit \n");
Console.Write( "创建目录:\tmd \t[ 目录名(不含空格)]\n");
Console.Write( "移动文件:\tmov \t[ 源文件名(不含空格)] [ 目标文件名(不含空格)]\n");
Console.Write( "移动目录:\tmovd \t[ 源目录名(不含空格)] [ 目标目录名(不含空格)]\n");
Console.Write( "删除目录:\trd \t[ 目录名(不含空格)]\n");
Console.Write( "文件改名:\tren \t[ 原文件名(不含空格)] [ 新文件名(不含空格)]\n");
Console.Write( "运行程序:\trun \t[ 文件名(不含空格)]\n");
Console.Write( "查看文件:\ttype \t[ 文件名(不含空格)]\n");
Console.Write( "复制目录:\txcopy \t[ 源目录(不含空格)] [ 目标目录(不含空格)]\n\n");
Console.WriteLine("版权所有:张镭、王松乔, 重庆大学计算机学院 2000 级 3 班\n");
Console.WriteLine("错误的命令.");
break;
}
}
Console.Write( "\n");
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -