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. HDU 4947 GCD Array 容斥原理+树状数组

    GCD Array Time Limit: 11000/5500 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total ...

  2. Duilib实现QQ聊天窗口晃动

    转载:http://blog.csdn.net/arbboter/article/details/26282717 转载:http://blog.csdn.net/zerolusta/article/ ...

  3. 。【自学总结 1】------3ds Max 界面

    3ds Max 界面包含4部分(7区域) 4部分:菜单.控制工具.命令面板.窗口区 7区域: 1.标题栏:主要用于显示当前工作文件的名称,可以看到文件存储路径. 2.菜单栏:菜单中的命令如果带有省略号 ...

  4. 编译安装php的配置参数详细解析

    ./configure --prefix=/usr/local/php --enable-opcache --enable-fpm --enable-sockets --enable-mysqlnd ...

  5. 学习从零开始写jQuery框架

    随着时代发展,javascript阵营里面出现了越来越多的优秀的框架,大大简化了我们的开发工作,在我们使用这些框架的时候是不是也应该饮水思源想想它们都是怎样构建起来的呢?如果你不满足于仅仅是使用一些现 ...

  6. 《BI项目笔记》创建时间维度(1)

    SSAS Date 维度基本上在所有的 Cube 设计过程中都存在,很难见到没有时间维度的 OLAP 数据库.但是根据不同的项目需求, Date 维度的设计可能不大相同,所以在设计时间维度的时候需要搞 ...

  7. rest版的webservice

    为了学习app做打算 今天就自学了下webservice,rest应该是其中一种 还有种就是soap,目前就先举个rest的demo吧 准备ws的jar和spring的jar,如何要连接数据的话就自行 ...

  8. fifter常见的运用场景

    没配置过滤器 package servlet; import java.io.IOException; import javax.servlet.ServletException; import ja ...

  9. $.ajax()常用方法详解(推荐)

    AJAX 是一种与服务器交换数据的技术,可以在补充在整个页面的情况下更新网页的一部分.接下来通过本文给大家介绍ajax一些常用方法,大家有需要可以一起学习. 1.url: 要求为String类型的参数 ...

  10. Android平板上开发应用的一点心得——精确适配不同的dpi和屏幕尺寸

    一.引言 Android的开源使厂商无需自行研发OS,大大降低了研发.生产的成本,使得Android平板品牌如雨后春笋般爆发,山寨机厂商们似乎又找到了一丝希望.与此同时带来的是广大开发者的苦不堪言,各 ...