VC++ 文件系统
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++ 文件系统的更多相关文章
- /proc 【虚拟文件系统】
在安装新硬件到 Linux 系统之前,你会想要知道当前系统的资源配置状况. Linux 将这类信息全集中在 /proc 文件系统下./proc 目录下的文件都是 Linux 内核虚拟出来的,当你读取它 ...
- linux 文件系统sysvinit 流程分析
参考网上许多的教程. 然后有一下相关的笔记: kernel 在挂载完文件系统后,会执行第一个进程init 这个进程的PID为1 这个进程是所有进程的父进程 init 进程,首先要去读取inittab中 ...
- VC++ ADO相关
<VC对ADO的操作> ADO概述: ADO是Microsoft为最新和最强大的数据访问范例 OLE DB 而设计的,是一个便于使用的应用程序层接口. ADO 使您能够编写应用程序以通过 ...
- 使用 /proc 文件系统来访问 linux操作系统 内核的内容 && 虚拟文件系统vfs及proc详解
http://blog.163.com/he_junwei/blog/static/19793764620152743325659/ http://www.01yun.com/other/201304 ...
- VC 宏与预处理使用方法总结
目录(?) C/C++ 预定义宏^ C/C++ 预定义宏用途:诊断与调试输出^ CRT 和 C 标准库中的宏^ NULL 空指针^ limits.h 整数类型常量^ float.h 浮点类型常量^ m ...
- VC操作ADO的基本策略
一.ADO概述 ADO是Microsoft为最新和最强大的数据访问范例 OLE DB 而设计的,是一个便于使用的应用程序层接口.ADO 使您能够编写应用程序以通过 OLE. DB 提供者访问和操作数据 ...
- Linux系统编程(6)——文件系统
计算机的文件系统是一种存储和组织计算机数据的方法,它使得对其访问和查找变得容易,文件系统使用文件和树形目录的抽象逻辑概念代替了硬盘和光盘等物理设备使用数据块的概念,用户使用文件系统来保存数据不必关心数 ...
- Linux设备驱动开发详解-Note(11)--- Linux 文件系统与设备文件系统(3)
Linux 文件系统与设备文件系统(3) 成于坚持,败于止步 sysfs 文件系统与 Linux 设备模型 1.sysfs 文件系统 Linux 2.6 内核引入了 sysfs 文件系统,sysfs ...
- VC与ADO数据库操作
VC与ADO数据库操作 学研部的同志们,大家好! 想开一次学习会,实习时间冲突了,只好把文档发给大家看了.重点推荐李振龙的BMP读图教程! 尤其是大三GIS班的同志,注意了,可能实习用得上的! 一.A ...
随机推荐
- [Python]实现XMPP协议即时通讯发送消息功能
#-*- coding: utf-8 -*- __author__ = 'tsbc' import xmpp import time #注意帐号信息,必须加@域名格式 from_user = 'che ...
- javscript 中的术语和俚语
语言中俚语和方言.在JavaScript中也有一些俚语或者说是术语,看似奇淫巧技,还是有一些用处,有三种语言组件可以来构造术语:强转.逻辑运算符和位变换. 1.强转:在javascript和大部分的语 ...
- css width="100" style ="width:100px" 区别
1. width="100"是正确的,而 width="100px"是错误的, style = "width:100px"是正确的 2. s ...
- 复旦高等代数 I(15级)思考题
1.证明: 第三类分块初等变换是若干个第三类初等变换的复合. 特别地, 第三类分块初等变换不改变行列式的值. 2.设 $n\,(n\geq 2)$ 阶方阵 $A=(a_{ij}(x))$, 其中每个元 ...
- 后勤数据源增量队列Delta Queue(RSA7)中的增量更新区Delta Update、增量重复区Delta Repetition
声明:原创作品,转载时请注明文章来自SAP师太技术博客:( 博/客/园www.cnblogs.com)www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...
- JVM学习——编译OpenJDK
最近在学习<深入理解java虚拟机 第二版>这本书.书中第一部分建议大家自己编译OpenJDK.抱着学习态度也来编译个玩一玩.下面进入正题. 1.编译环境介绍 操作系统 CentOS Li ...
- DEELX 正则表达式引擎(v1.2)
DEELX 正则表达式引擎(v1.2) 简介见文末. 选择使用deelx的理由:全部代码位于一个头文件(.h)中, 比任何引擎都使用简单和方便. 利用分组从字符串当中提取出化学元素英文名.比如 Ag, ...
- Java后台传前台json数组
function checkStore(){ var flag=1; $.ajax({ url:"widget?type=shop_cart&ajax=yes&action= ...
- callee
首先解释callee 参考网站 http://www.css88.com/archives/1706 callee是arguments的一个成员,仅当函数正在执行的时候才可用,so用于递归也行 代码示 ...
- Laravel Container分析
在分析Laravel流程具体细节之前我们先来了解一下它的Container容器,容器的作用简单的说就是用来存储对象(类名称或者实例),包括提供一些生成对象实例的方法. 我们查看Illuminate\C ...