查找exe同在一个文件夹下的Voices文件夹下的某个MP3是否存在

本文介绍了一个用于在指定文件夹内查找并加载特定名称的MP3文件的C++函数。该函数通过遍历指定路径下的所有MP3文件来实现目标文件的定位。
Code:
  1. void  LoadVoice(TCHAR *lpName)   
  2. {   
  3.     TCHAR appPath[MAX_PATH];   
  4.   
  5.     // 获取exe文件夹路径   
  6.     GetAppPath(appPath,MAX_PATH);      
  7.        
  8.     // 获取插件文件夹路径   
  9.     TCHAR pluginsPath[MAX_PATH];   
  10.     wsprintf(pluginsPath,"%s//Voices",appPath);   
  11.        
  12.     //    
  13.     TCHAR pluginsPattern[MAX_PATH];   
  14.     // 文件夹下所有的mp3文件   
  15.     wsprintf(pluginsPattern,"%s//*.mp3",pluginsPath);   
  16.        
  17.     // 存放文件信息   
  18.     WIN32_FIND_DATA fileinfo;   
  19.        
  20.     // 找到第一个文件   
  21.     HANDLE hFile=FindFirstFile(pluginsPattern,&fileinfo);   
  22.     DWORD errorcode = 0;       
  23.        
  24.    // 定义一个flag为找到的标志   
  25.     BOOL ifCanFind = FALSE;   
  26.     while(hFile!=INVALID_HANDLE_VALUE && errorcode!=ERROR_NO_MORE_FILES)   
  27.     {                  
  28.        
  29.         TCHAR fileName[MAX_PATH*2];    
  30.         TCHAR lpVoiceName[MAX_PATH];   
  31.            
  32.         // 初始化lpVoiceName   
  33.         ZeroMemory(lpVoiceName, sizeof(lpVoiceName));   
  34.         TCHAR *pLastSlash = strrchr(fileinfo.cFileName, '.');   
  35.   
  36.         // printf(pLastSlash);   
  37.         // 得到文件的名称如One.mp3得到One   
  38.         TCHAR *lp = fileinfo.cFileName;   
  39.         // 从fileinfo.cFileName中复制n个字符到lpVoiceName中   
  40.         strncpy(lpVoiceName, fileinfo.cFileName, pLastSlash - fileinfo.cFileName);   
  41.         // fileinfo.cFileName 的全全文件路径   
  42.         wsprintf(fileName,"%s//%s",pluginsPath,fileinfo.cFileName);   
  43.            
  44.         // 判断是歌声名称是否与声音文件名匹配,如果匹配进行操作   
  45.         if (0 == strcmp(lpName, lpVoiceName))   
  46.         {   
  47.             // AfxMessageBox(lpVoiceName);   
  48.             // PlayVoice(fileName);   
  49.             // Sleep(200);   
  50.             // StopVoice(fileName);   
  51.             printf("Find out the %s ok/n", lpName);   
  52.             ifCanFind = TRUE;   
  53.             break;   
  54.         }   
  55.   
  56.         // 否则就查找下一个文件   
  57.         else  
  58.         {   
  59.             FindNextFile(hFile,&fileinfo);   
  60.             errorcode=GetLastError();   
  61.         }   
  62.     }   
  63.     if (FALSE == ifCanFind)   
  64.         printf("Can't find the same mp3!/n");   
  65.     FindClose(hFile);   
  66. }  

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值