对文件的操作的几个函数

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;
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值