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. tomcat配置SSL证书(使用startSSL申请到的证书)

    1. 生成p12证书 生成完成后,下载保存. 2. 将p12文件上传至服务器上的tomcat/keystore/上,此处取名为test.com.p12 3. 修改tomcat/conf/server. ...

  2. .Net最佳实践3:使用性能计数器收集性能数据

    本文值得阅读吗? 本文讨论我们如何使用性能计数器从应用程序收集数据.我们将先了解的基本知识,然后我们将看到一个简单的示例,我们将从中收集一些性能数据. 介绍: - 我的应用程序的性能是最好的,像火箭 ...

  3. BQ24296充电管理芯片使用过程中的注意事项

    BQ24296遇到的一点问题 概述:BQ24296是TI出品的具有窄范围VDC控制.基于I2C通讯的最大支持3A充电电流的开关式电源路径管理芯片.可以轻松实现2A以上的大电流充电,能量转换效率达到90 ...

  4. Linux基本操作1 - 设备操作

    Linux开发的过程中,肯定会使用到很多设备,所以对设备的挂载卸载是一个很基本的操作. Linux对设备的默认定义如下: 一.Linux中的硬件设备号     设 备          设 备 号   ...

  5. JAVA的UDP协议交互信息

    由于要做app的UDP协议交互,所以就特地学习了下,其实也就类似于java的server和socket,下面就写了个简单的demo 服务端: package com.test1; import jav ...

  6. Shell脚本查看apk签名信息

    用shell写了一个查看apk签名的脚本.代码很少也很简单 支持递归目录查询 #!/bin/bash #使用方法 ./getcertificate.sh xx.apk get_signature() ...

  7. js之规范代码写法

    一.避免多次定义var 例如:var a = 0; var b = 1; 尽量定义为:var a = 0,   b =1; 二.尽量在结尾使用分号(semicolon) 否则编辑器会提示:Unterm ...

  8. linux配置ssh互信

    公钥认证的基本思想: 对信息的加密和解密采用不同的key,这对key分别称作private key和public key,其中,public key存放在欲登录的服务器上,而private key为特 ...

  9. zabbix3.0.4 部署之二 (Centos6.5系统准备)

    1.安装Centos6.5  2.6.32-642.4.2.el6.x86_64 升级所有软件至最新: yum update 2.同步时间.安装ntpd yum  install ntpddate n ...

  10. 第八章 企业项目开发--分布式缓存memcached

    注意:本节代码基于<第七章 企业项目开发--本地缓存guava cache> 1.本地缓存的问题 本地缓存速度一开始高于分布式缓存,但是随着其缓存数量的增加,所占内存越来越大,系统运行内存 ...