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. 20160330001 调用及触发Office Outlook 约会

    using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using Sy ...

  2. Windows下WebStorm使用SVN

    安装了phpstorm之后,想配置svn,结果在file->settings->Version Contorl->subversion->use conmand line cl ...

  3. iOS Error

    1),'libxml/tree.h' file not found Solution: 1.  导入libxml2.dylib 包 2.设置Header Search Paths 为 /usr/inc ...

  4. AngularJS 特性—SinglePage、template、Controller

    单页Web应用(SinglePage) 顾名思义,只使用一个页面的Web应用程序.单页面应用是指用户通过浏览器加载独立的HTML页面,Ajax加载数据页面无刷新,实现操作各种操作. 模板(templa ...

  5. laravel多国语言包

    https://packagist.org/packages/caouecs/laravel-lang 例如安装中文语言包 则下载 zh-CN 拷贝文件到 resouces/lang 下 然后修改co ...

  6. vs 2005 使用 boost regex

    第一步: Boost 入门及其VS2005下编译boost库  boost.regex库安装指南  深入浅出之正则表达式(一)  C++中三种正则表达式比较(C regex,C ++regex,boo ...

  7. nginx配置文件结构

    nginx配置文件结构   全局参数 配置系统全局参数如:worker_processes 工作子进程数量.error_log 错误日志路径.pid 进程IDEvent一般是配置nginx工作模式及连 ...

  8. AngularJS事件绑定的使用详解

    本文和大家分享的主要是AngularJS中事件绑定相关知识点,希望通过本文的分享,对大家学习和使用AngularJS有所帮助. 1.绑定事件:表达式.事件方法名: 2.绑定点击事件实例:显示.隐藏页面 ...

  9. checkbox 设置不可更改

    readonly="readonly" 设置不起作用   用 onclick="return false;"

  10. 浅谈 Android 自定义锁屏页的发车姿势

    作者:blowUp,原文链接:http://mp.weixin.qq.com/s?__biz=MzA3NTYzODYzMg==&mid=2653577446&idx=2&sn= ...