using namespace System;
using namespace System::IO; void ShowHelpMsg(){
Console::WriteLine(L"本程序可用的命令如下(命令全部用小写):");
Console::WriteLine();
Console::WriteLine(L"cd 子目录:进入指定的子目录,如 cd subdir");
Console::WriteLine(L"dir:查看当前目录下的所有子目录和文件");
Console::WriteLine(L"dirinfo:查看当前目录的属性");
Console::WriteLine(L"exit:退出程序");
Console::WriteLine(L"fileinfo 文件名:查看当前目录下的某个指定文件的属性,\
如 fileinfo ReadMe.txt");
Console::WriteLine(L"help:显示本程序的帮助信息");
Console::WriteLine(L"up:进入父目录");
} //查看当前目录的所有子目录和文件
void OnDirdir(DirectoryInfo^ dir)
{
array<DirectoryInfo^>^ Dirs=dir->GetDirectories();//获取所有子目录
if(Dirs->Length>)
{
for each(DirectoryInfo^ DirItem in Dirs)
{//显示子目录的名字和创建时间
Console::WriteLine(L"{0,-20}{1,-8}{2}",DirItem->Name,L"<DIR>",DirItem->CreationTime);
}
}
array<FileInfo^>^ fileArr=dir->GetFiles();//获取所有文件
if(fileArr->Length > )
{
for each(FileInfo^ fileItem in fileArr)
{//显示文件的名字、长度和创建时间
Console::WriteLine(L"{0,-20}{1,-8}{2}",fileItem->Name,fileItem->Length,fileItem->CreationTime);
}
}
} //使用引用 因为要改变目录
void OnCD(String^ SubDirName,DirectoryInfo^& Dir)
{
//首先 检查子目录是否存在
array<DirectoryInfo^>^ Dirs=Dir->GetDirectories();//获取所有子目录
if(==Dirs->Length)
{
Console::WriteLine(L"此目录下没有子目录!");
}
else
{
bool flag=false;
for each(DirectoryInfo^ DirItem in Dirs)
{
if(DirItem->Name->Equals(SubDirName))
{
flag=true;
Dir=DirItem;//设置指定名字的子目录
break;
}
}
if(!flag)
{
Console::WriteLine(L" 子目录{0} 不存在",SubDirName);
}
}
} //查看当前目录的属性
void OnDirinfo(DirectoryInfo^ Dir)
{//以下的属性 FileInf类与DirectoryInfo类的共同属性 都是继承基类FileSystemInfo
Console::WriteLine(L"Name:{0}",Dir->Name);//名称
Console::WriteLine(L"CreationTime:{0}",Dir->CreationTime);//创建时间
Console::WriteLine(L"LastAccessTime:{0}",Dir->LastAccessTime);//最后访问时间
Console::WriteLine(L"LastWriteTime:{0}",Dir->LastWriteTime);//最后修改时间
Console::WriteLine(L"Attributes:{0}",Dir->Attributes);//属性 } //查看您当前目录下的指定文件的属性 :fileinfo 文件名
void OnFileInfo(DirectoryInfo^ Dir,String^ FileName)
{
array<FileInfo^>^ Files=Dir->GetFiles();//获取所有文件
//判断是否存在
bool flag=false;
if(Files->Length > )
{
for each(FileInfo^ fileItem in Files)
{
if(fileItem->Name->Equals(FileName))
{ //以下的属性 FileInf类与DirectoryInfo类的共同属性 都是继承基类FileSystemInfo
Console::WriteLine(L"Name:{0}",fileItem->Name);
Console::WriteLine(L"Extension:{0}",fileItem->Extension);
Console::WriteLine(L"Length:{0}",fileItem->Length);
Console::WriteLine(L"IsReadOnly:{0}",fileItem->IsReadOnly);
Console::WriteLine(L"CreationTime:{0}",fileItem->CreationTime);
Console::WriteLine(L"LastAccessTime:{0}",fileItem->LastAccessTime);
Console::WriteLine(L"LastWriteTime:{0}",fileItem->LastWriteTime);
Console::WriteLine(L"Attributes:{0}",fileItem->Attributes);
flag=true;
break;
}
}
}
if(!flag)
{
Console::WriteLine(L"此文件 {0} 不存在",FileName);
}
} int main(array<System::String ^> ^args)
{
//获取当前目录
System::String^ CurrentDir=Directory::GetCurrentDirectory();
DirectoryInfo^ dir=gcnew DirectoryInfo(CurrentDir);
while()
{
Console::WriteLine(dir->FullName+L">");
//去处用户输入命令的头尾空白字符
System::String^ cmd=Console::ReadLine()->Trim();
if(cmd->Equals(L"exit"))
{
Environment::Exit();
}
else if(cmd->Equals(L"dir"))//显示当前目录下的所有子目录和文件
{
OnDirdir(dir);
}
else if(cmd->Equals(L"dirinfo"))//察看当前目录的属性
{
OnDirinfo(dir);
}
else if(cmd->Equals(L"help"))
{
ShowHelpMsg();
}
else if(cmd->Equals(L"up"))//切换到父目录
{
//达到根目录后就不能再向上了
if(!dir->FullName->Equals(dir->Root->FullName))
{
dir=dir->Parent;
}
}
else if(System::String::Compare(cmd,,L"cd ",,)==)//cd 切换到某个子目录
{
String^ DirName=cmd->Substring()->Trim();
OnCD(DirName,dir);
}
else if( System::String::Compare(cmd,,L"fileinfo ",,)==)//查看指定文件的属性
{
String^ fileName=cmd->Substring()->Trim();
OnFileInfo(dir,fileName);
}
else
{
Console::WriteLine(L"非法命令!!!!");
ShowHelpMsg();
}
} //Console::WriteLine(L"Hello World");
return ;
}

其中System::String::Compare(cmd,0,L"fileinfo ",0,9) 函数原型如下:
public:
static int Compare(
String^ strA,
int indexA,
String^ strB,
int indexB,
int length
)

参数

strA
类型:System::String 要在比较中使用的第一个字符串。
indexA
类型:System::Int32 strA 中子字符串的位置。
strB
类型:System::String 要在比较中使用的第二个字符串。
indexB
类型:System::Int32 strB 中子字符串的位置。
length
类型:System::Int32 要比较的子字符串中字符的最大数量。

返回值

VC++ 文件系统的更多相关文章

  1. /proc 【虚拟文件系统】

    在安装新硬件到 Linux 系统之前,你会想要知道当前系统的资源配置状况. Linux 将这类信息全集中在 /proc 文件系统下./proc 目录下的文件都是 Linux 内核虚拟出来的,当你读取它 ...

  2. linux 文件系统sysvinit 流程分析

    参考网上许多的教程. 然后有一下相关的笔记: kernel 在挂载完文件系统后,会执行第一个进程init 这个进程的PID为1 这个进程是所有进程的父进程 init 进程,首先要去读取inittab中 ...

  3. VC++ ADO相关

    <VC对ADO的操作> ADO概述: ADO是Microsoft为最新和最强大的数据访问范例 OLE DB 而设计的,是一个便于使用的应用程序层接口. ADO 使您能够编写应用程序以通过 ...

  4. 使用 /proc 文件系统来访问 linux操作系统 内核的内容 && 虚拟文件系统vfs及proc详解

    http://blog.163.com/he_junwei/blog/static/19793764620152743325659/ http://www.01yun.com/other/201304 ...

  5. VC 宏与预处理使用方法总结

    目录(?) C/C++ 预定义宏^ C/C++ 预定义宏用途:诊断与调试输出^ CRT 和 C 标准库中的宏^ NULL 空指针^ limits.h 整数类型常量^ float.h 浮点类型常量^ m ...

  6. VC操作ADO的基本策略

    一.ADO概述 ADO是Microsoft为最新和最强大的数据访问范例 OLE DB 而设计的,是一个便于使用的应用程序层接口.ADO 使您能够编写应用程序以通过 OLE. DB 提供者访问和操作数据 ...

  7. Linux系统编程(6)——文件系统

    计算机的文件系统是一种存储和组织计算机数据的方法,它使得对其访问和查找变得容易,文件系统使用文件和树形目录的抽象逻辑概念代替了硬盘和光盘等物理设备使用数据块的概念,用户使用文件系统来保存数据不必关心数 ...

  8. Linux设备驱动开发详解-Note(11)--- Linux 文件系统与设备文件系统(3)

    Linux 文件系统与设备文件系统(3) 成于坚持,败于止步 sysfs 文件系统与 Linux 设备模型 1.sysfs 文件系统 Linux 2.6 内核引入了 sysfs 文件系统,sysfs ...

  9. VC与ADO数据库操作

    VC与ADO数据库操作 学研部的同志们,大家好! 想开一次学习会,实习时间冲突了,只好把文档发给大家看了.重点推荐李振龙的BMP读图教程! 尤其是大三GIS班的同志,注意了,可能实习用得上的! 一.A ...

随机推荐

  1. canvas 绘图

    <canvas>元素是HTML5中的绘图元素,通过定义一个画布区域,然后使用javascript动态地在这个区域里面绘制图形,对于2D和3D图形都可以绘制,我们将其分成2D上下文和WebG ...

  2. 学习mongo系列(七)aggregate() ,$group() 管道

    aggregate()聚合,主要用于处理数据(诸如统计平均值,求和等),并返回计算后的数据结果.有点类似sql语句中的 count(*) 接上边的数据库: > db.user.aggregate ...

  3. java高薪之路__010_设计模式

    设计模式只是一个在构建大型工程时,为了方便更改,添加,查询和管理的一种代码工具,没有必要单独为了设计模式而使用设计模式,使简单的事情复杂化. 总体来说设计模式分为三大类: 1. 创建型模式,共五种 - ...

  4. Spring事务管理只对出现运行期异常进行回滚

    原文:http://blog.csdn.net/abc19900828/article/details/39497631 使用spring难免要用到spring的事务管理,要用事务管理又会很自然的选择 ...

  5. 怎么写jq插件?

    1.概述 先看看html代码 <ul id="catagory"> <li><a href="#">jQuery</a ...

  6. 0020 Linux 文件操作命令

    1. 创建文件 touch 文件名 2. 删除文件 rm 文件名 3. 复制文件 cp 源文件 目录 4.剪切文件 mv 源文件 目标文件 5.重命名文件 mv 源文件名 新文件名 6.改变文件权限 ...

  7. vue.js学习笔记之v-bind,v-on

    v-bind 指令用于响应地更新 HTML 特性 形式如:v-bind:href    缩写为    :href; v-on 指令用于监听DOM事件 形式如:v-on:click  缩写为 @clic ...

  8. iOS中的translucent和automaticallyAdjustsScrollViewInsets用法

    关于这两个属性我长话短说 具体的可以更具具体情况来设置: translucent用法 automaticallyAdjustsScrollViewInsets用法 translucent用法 iOS7 ...

  9. CentOS 下 rpm包与 yum 安装与卸载

    rpm包的安装:      1.安装一个包 # rpm -ivh 2.升级一个包 # rpm -Uvh 3.移走一个包 # rpm -e 4.安装参数 --force 即使覆盖属于其它包的文件也强迫安 ...

  10. freemarker if elseif

    FreeMarker模板 if, else, elseif 指令 : if, else, elseif 语法 <#if condition> ... <#elseif conditi ...