对文件的操作的几个函数

1.网上有很多关于文件的操作的原型,主要的有以下:

函数 说明
ExpandFileName() 返回文件的全路径(含驱动器、路径)
ExtractFileExt() 从文件名中抽取扩展名
ExtractFileName() 从文件名中抽取不含路径的文件名
ExtractFilePath() 从文件名中抽取路径名
ExtractFileDir() 从文件名中抽取目录名
ExtractFileDrive() 从文件名中抽取驱动器名
ChangeFileExt() 改变文件的扩展名
ExpandUNCFileName() 返回含有网络驱动器的文件全路径
ExtractRelativePath() 从文件名中抽取相对路径信息
ExtractShortPathName() 把文件名转化为DOS的8·3格式
MatchesMask() 检查文件是否与指定的文件名格式匹配


2.由于以上的没有直接满足目前的需求,于是结合以上的函数,自己写了一下函数的实现。

1)void BackFold(AnsiString fileName,AnsiString fileFold);//Source filePath,target filePath

//这是备份文件后删除原文件

{
SHFILEOPSTRUCT op;
String strFrom = fileName+"\0", strTo = fileFold+"\0";
op.hwnd = NULL;
op.wFunc = FO_MOVE; // FO_MOVE:移动, FO_COPY:拷贝, FO_DELETE:删除, FO_RENAME:更名
op.pFrom = strFrom.c_str();
op.pTo = strTo.c_str();
op.fFlags = FOF_WANTNUKEWARNING; // FOF_ALLOWUNDO:删除文件到回收站
::SHFileOperation(&op);
}


2)从路径//D:/file/2010.txt return file这个倒数二级文件路径名

AnsiString city(AnsiString fileName);

{
AnsiString fold;
AnsiString str = ExtractFileDir(fileName);
g_logFile.print("%s\n",str);
fold=ExtractFileName(str);
g_logFile.print("%s\n",fold);
return fold;
}


3)改变文件的后缀名,返回文件的名称

AnsiString fileOfName(AnsiString fileName,int Flag);//0-need change,1-change for vox Result: 2010.txt or 2010.vox

{
AnsiString name,str;
if(Flag==0)
{
str = ExtractFileName(fileName);
g_logFile.print("%s\n",str); // 2012.txt
}
else
{
name=ChangeFileExt(fileName,".vox") ;
str= ExtractFileName(name);
g_logFile.print("%s\n",str); //2012.vox
}
return str;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值