1. 程式人生 > >C++ 合併資料夾下所有的txt檔案

C++ 合併資料夾下所有的txt檔案

下面的程式合併F:\新建資料夾\all資料夾下的所有檔案

合併順序按檔名稱排序

輸出到merge.txt檔案中

#include <io.h>
#include <bits/stdc++.h>
using namespace std;

void getFiles( string path, vector<string>& files ){
	//檔案控制代碼
	long   hFile   =   0;
	//檔案資訊
	struct _finddata_t fileinfo;
	string p;
	if((hFile = _findfirst(p.assign(path).append("\\*").c_str(),&fileinfo)) !=  -1){
		do{
			//如果是目錄,迭代之
			//如果不是,加入列表
			if((fileinfo.attrib &  _A_SUBDIR)){
				if(strcmp(fileinfo.name,".") != 0  &&  strcmp(fileinfo.name,"..") != 0)
					getFiles( p.assign(path).append("\\").append(fileinfo.name), files );
			}else{
				files.push_back(p.assign(path).append("\\").append(fileinfo.name) );
			}
		}while(_findnext(hFile, &fileinfo)  == 0);
		_findclose(hFile);
	}
}
int main(){
    char * filePath = "F:\\新建資料夾\\all";
    vector<string> files;

    ////獲取該路徑下的所有檔案
    getFiles(filePath, files );

    char str[30];
    int n = files.size();

    ifstream fin;
    ofstream fout("merge.txt");
    for (int i = 0;i < n;i++){
        fin.open(files[i]);
        string a;
        \\fout<<i<<"\n";
        while(getline(fin,a,'\n')){
            fout<<a<<"\n";
        }
        fin.close();
        fin.clear();
    }

    return 0;
}