知行社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 1689|回复: 0
收起左侧

c++实现复制指定文件夹下视频文件

[复制链接]
script 发表于 2011-11-10 21:01 | 显示全部楼层 |阅读模式
  1. #include <windows.h>
  2. #include <string.h>
  3. #include <string>
  4. #include <iostream>
  5. #include <vector>
  6. using namespace std;

  7. #define LEN 1024
  8. // 深度优先递归遍历目录中所有的文件
  9. BOOL  DirectoryList(LPCSTR Path,char *ch)
  10. {
  11.   WIN32_FIND_DATA FindData;
  12.   HANDLE hError;
  13.   int FileCount = 0;
  14.   char FilePathName[LEN];
  15.   // 构造路径
  16.   char FullPathName[LEN];
  17.   strcpy(FilePathName, Path);
  18.   strcat(FilePathName, "\\*.*");
  19.   hError = FindFirstFile(FilePathName, &FindData);
  20.   if (hError == INVALID_HANDLE_VALUE)
  21.   {
  22.     cout<<"搜索失败!"<<endl;
  23.     return 0;
  24.   }
  25.   while(::FindNextFile(hError, &FindData))
  26.   {
  27.     // 过虑.和..
  28.     if (strcmp(FindData.cFileName, ".") == 0
  29.      || strcmp(FindData.cFileName, "..") == 0 )
  30.     {
  31.     continue;
  32.     }
  33.    
  34.     // 构造完整路径
  35.    wsprintf(FullPathName, "%s\\%s", Path,FindData.cFileName);
  36.   FileCount++;
  37.    // 输出本级的文件
  38.    cout<<FileCount<<" "<<FullPathName<<endl;
  39.    string fullpath=FullPathName;
  40.    string extension;
  41.    unsigned int loc=fullpath.rfind(".");
  42.    if(loc!=string::npos)
  43.    extension=fullpath.substr(loc,fullpath.length()-loc);
  44.    //文件扩展名,可根据需要自行添加
  45.    vector<string>extName;
  46.    {
  47.    extName.push_back(".avi");
  48.    extName.push_back(".AVI");
  49.    extName.push_back(".RMVB");
  50.    extName.push_back(".rmvb");
  51.    extName.push_back(".rm");
  52.    extName.push_back(".RM");
  53.    extName.push_back(".wmv");
  54.    extName.push_back(".WMV");
  55.    extName.push_back(".MP4");
  56.    extName.push_back(".mp4");
  57.    extName.push_back(".mov");
  58.    extName.push_back(".MOV");
  59.    extName.push_back(".3gp");
  60.    extName.push_back(".3GP");
  61.    extName.push_back(".MKV");
  62.    extName.push_back(".mkv");
  63.    extName.push_back(".flv");
  64.    extName.push_back(".FLV");
  65.    }
  66.    for(unsigned int i=0;i<extName.size();i++)
  67.    {
  68.     if(extension==extName[i])
  69.     {
  70.      char *cpy=new char[100];
  71.      strcpy(cpy,"copy ");
  72.      strcat(FullPathName," ");
  73.      strcat(cpy,FullPathName);
  74.      strcat(cpy,ch);
  75.      system(cpy);
  76.     }
  77.    }

  78.     if (FindData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
  79.     {
  80.      cout<<"<Dir>";
  81.      DirectoryList(FullPathName,ch);
  82.     }

  83.   }
  84.   return 0;
  85. }

  86. //检查指定目录是否存在
  87. bool  CheckFolderExist(const string &strPath)
  88. {
  89.     WIN32_FIND_DATA  wfd;
  90.     bool rValue = false;
  91.     HANDLE hFind = FindFirstFile(strPath.c_str(), &wfd);
  92.     if ((hFind != INVALID_HANDLE_VALUE) && (wfd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY))
  93.     {
  94.         rValue = true;  
  95.     }
  96.     FindClose(hFind);
  97.     return rValue;
  98. }

  99. int main()
  100. {
  101.   cout<<"请输入要搜索的文件夹路径:";
  102.   char *path=new char[100];
  103.   cin>>path;
  104.   cout<<"请输入要复制到的文件夹路径:";
  105.   char *dir=new char[100];
  106.   cin>>dir;
  107.   string folder=dir;
  108. //检查指定目录是否存在
  109.     if (!CheckFolderExist(folder))
  110.     {
  111.   char *mdfolder=new char[50];
  112.   strcpy(mdfolder,"md ");
  113.   strcat(mdfolder,dir);
  114.         cout<<"指定目录不存在..."<<endl;
  115.   cout<<"是否创建该目录?(Y/N)"<<endl;
  116.   string choice;
  117.   cin>>choice;
  118.   if(choice=="N"||choice=="n")
  119.   {
  120.    cout<<"程序即将退出..."<<endl;
  121.    system("pause");
  122.    exit(0);
  123.   }
  124.   else
  125.   {
  126.    system(mdfolder);
  127.    DirectoryList(path,dir);
  128.   }
  129.   
  130.     }
  131. else
  132.   DirectoryList(path,dir);
  133.   cout<<endl;
  134.   system("pause");
  135.   return 0;
  136. }
复制代码


QQ|小黑屋|手机版|知行技术社区 ( 湘ICP备11020288号-1 )

GMT+8, 2020-10-26 21:50 , Processed in 0.014371 second(s), 10 queries , Redis On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表