MyFileApp.cpp
上传用户:qzyuheng
上传日期:2013-04-28
资源大小:71k
文件大小:2k
源码类别:

词法分析

开发平台:

Visual C++

  1. #include "stdafx.h"
  2. #include "MyFileApp.h"
  3. #include "stdlib.h"
  4. #include "io.h"          // 包含 _findfirst(), _findnext()函数原型
  5. #include "direct.h"      // 包含 _chdir()函数原型
  6. #include "errno.h"       // 包含系统变量errno
  7. CString ChangeFileName(CString sourceName, CString newAffix) 
  8. {// 在原文件名后加任意字符产生新文件名,文件后缀名为txt
  9. int i=sourceName.ReverseFind('.'); // 从后向前搜索圆点
  10. int j=sourceName.ReverseFind('\'); // 从后向前搜索反斜杠
  11. if (i>j) return sourceName.Left(i)+newAffix+".txt";
  12. else return sourceName+newAffix+".txt";
  13. }
  14. CString ChangeExt(CString oldName,CString newExt)
  15. {// 将原文件名的后缀部分改为新的后缀名
  16. int i=oldName.ReverseFind('.');
  17. int j=oldName.ReverseFind('\');
  18. if(i>j)
  19. return oldName.Left(i+1)+newExt;
  20. else
  21. return oldName+"."+newExt;
  22. }
  23. int ProcessFiles(char *Ext, char * Name, void(* ProcessAFile)(CString fileName))
  24. {
  25. CFileDialog dlg(TRUE, Ext, Name, OFN_ALLOWMULTISELECT);
  26. CString strFileNames; // 分配一片空间存放文件名,可以选取多个文件
  27. dlg.m_ofn.lpstrFile = strFileNames.GetBuffer(2048);
  28. dlg.m_ofn.nMaxFile = 2048;
  29. if(dlg.DoModal()!=IDOK) {
  30. AfxMessageBox("您没有选取任何文件!");
  31. return 0;
  32. }
  33. strFileNames.ReleaseBuffer();
  34. int fileCount = 0;
  35. CString FileName;
  36. POSITION pos = dlg.GetStartPosition(); // 获取第一个文件名的起点位置
  37. while(pos!=NULL) {  // 如果有文件可以获取
  38. FileName = dlg.GetNextPathName(pos); // 获取文件名,并移到下一个文件名的起始位置
  39. ProcessAFile(FileName); // 调用处理单个文件的函数
  40. fileCount ++; // 这里有点问题,实际上并不知道是否"真的"处理了文件,
  41. // 也许调用的函数打开了一个文件但不符合处理要求,
  42. // 根本没有处理文件
  43. }
  44. AfxMessageBox("全部文件处理完毕!");
  45. return fileCount; // 返回文件个数
  46. }