c++ 如何将一个文件夹里的所有文件追加到另一个文件中

方法:

 
 

1、打开A文件,准备追加信息。

      fin.open(file_Name, ios_base::app);

 

2、依次打开文件夹中的文件,将内容追加到A中。

使用FindFirstFile()跟FindNextFile();

VC声明

HANDLE FindFirstFile(

LPCTSTR lpFileName, // file name

LPWIN32_FIND_DATA lpFindFileData // data buffer);

参数说明

     HANDLE hFindFile搜索的文件句柄 函数执行的时候搜索的是此句柄的下一文件 LPWIN32_FIND_DATA lpFindFileData 指向一个用于保存文件信息的结构体

返回值

     如果调用成功返回一个句柄,可用来做为FindNextFileFindClose参数

           调用失败 返回为INVALID_HANDLE_VALUE(-1) ,可调用GetLastError来获取错误信息

 

VC声明

BOOLFindNextFile(

HANDLE hFindFile, //searchhandle

LPWIN32_FIND_DATA lpFindFileData //databuffer );

功能说明

          继续查找FindFirstFile函数搜索后的文件

参数说明

          HANDLE hFindFile搜索的文件句柄 函数执行的时候搜索的是此句柄的下一文件

          LPWIN32_FIND_DATA lpFindFileData 指向一个用于保存文件信息的结构体

返回值

                 非零表示成功,零表示失败。如不再有与指定条件相符的文件,会将GetLastError设置成ERROR_NO_MORE_FILES

 

 

 
 

 

总体框架:

WIN32_FIND_DATA FindFileData;
    HANDLE hFind = ::FindFirstFile(pcsDir, &FindFileData);    
     string filename;    
    if(INVALID_HANDLE_VALUE == hFind)
        return false;
     int flag = 1;    
    while(flag != 0)
    {
         flag = FindNextFile(hFind, &FindFileData);    
          filename = FindFileData.cFileName;    
        
    }
FindClose(hFind);

 

 
3、 需注意的地方:

目录的路径名需要:const char * pcsDir = "D:\\eng\\*.*";

                                                        

                                                                            源代码:

 

  1. #include <iostream>  
  2. #include <fstream>  
  3. #include <string>  
  4. #include <windows.h>  
  5. #include<stdio.h>  
  6.  
  7. usingnamespace std;     
  8.  
  9. constchar * file_Name = "listening.txt"
  10. constchar * pcsDir = "D:\\eng\\*.*";   ////////////////////////////////////  
  11. ofstream fin;        
  12.  
  13. bool CombineFile(string filename);   
  14. int iFindFiles();    
  15.  
  16. int main() 
  17.      
  18.     ifstream fin_read;   
  19.  
  20.     fin_read.open(file_Name);    
  21.  
  22.     char ch;     
  23.      
  24.     if(!fin_read.is_open()) 
  25.     { 
  26.         cout<< "can not open the file(fin_read)" << endl;    
  27.         return 0;    
  28.     } 
  29.     else 
  30.     { 
  31.         char ch;     
  32.         while (fin_read.get(ch)) 
  33.             cout << ch;    
  34.  
  35.         cout << endl <<endl;     
  36.  
  37.         fin_read.close();    
  38.     } 
  39.      
  40.     string str;  
  41.  
  42.     cout << "if you wanna copy those files, please enter -- yes:" <<endl;    
  43.  
  44.     cin >>str;     
  45.     if( str == "yes"
  46.     { 
  47.         fin.open(file_Name, ios_base::app);  
  48.          
  49.         if( !fin ) 
  50.         { 
  51.             cout <<"can not open the fin" <<endl;    
  52.         } 
  53.  
  54.         else 
  55.         { 
  56.             iFindFiles();    
  57.         } 
  58.     } 
  59.  
  60.     fin.close();     
  61.      
  62.     return 0;    
  63.  
  64. int iFindFiles( ) 
  65.  
  66.     if (!pcsDir) 
  67.     { 
  68.         cout <<"can not open the dir" << endl;   
  69.         returnfalse
  70.     } 
  71.     cout << "open the dir" << endl;  
  72.  
  73.     WIN32_FIND_DATA FindFileData; 
  74.     HANDLE hFind = ::FindFirstFile(pcsDir, &FindFileData);   
  75.  
  76.     string filename;     
  77.  
  78.     if(INVALID_HANDLE_VALUE == hFind) 
  79.         returnfalse
  80.  
  81.     int flag = 1;    
  82.  
  83.     while(flag != 0) 
  84.     { 
  85.         flag = FindNextFile(hFind, &FindFileData);   
  86.  
  87.         filename = FindFileData.cFileName;   
  88.         int strSize = filename.size();   
  89.  
  90.         if( strSize <= 3 ) 
  91.             continue;    
  92.  
  93.         string isStr = filename.substr(strSize-3, strSize);  
  94.         if( isStr == "lrc"
  95.         { 
  96.             CombineFile(filename);   
  97.         } 
  98.     } 
  99.  
  100.     FindClose(hFind); 
  101.  
  102.     return 0;    
  103.  
  104. bool CombineFile(string filename) 
  105.     ifstream foutput;    
  106.  
  107.     filename = "D:\\eng\\" + filename;   
  108.     cout << "the f1ile name is " << endl <<filename.c_str() <<endl;  
  109.  
  110.     foutput.open(filename.c_str());  
  111.  
  112.     if( !foutput ) 
  113.     { 
  114.         cout << "can not open the file" << endl<<endl;     
  115.         returnfalse;    
  116.     } 
  117.      
  118.     char ch;     
  119.     while (foutput.get(ch)) 
  120.     { 
  121.         fin<< ch;  
  122.     } 
  123.  
  124.     fin << endl << endl;     
  125.  
  126.     foutput.close();     
  127.  
  128.     returntrue;     

你可能感兴趣的:(C++)