linux遍歷資料夾下的檔案
阿新 • • 發佈:2019-01-01
static bool getFileNamesInDir(const string strDir, vector<string> &vecFileName) { DIR* dir = NULL; struct dirent entry; struct dirent* entryPtr = NULL; char realPath[1024]; realpath(strDir.c_str(), realPath); string strRealPath = realPath; dir = opendir(realPath); if (NULL == dir) { cout << strerror(errno) << ", strDir : " << strDir << endl; return false; } readdir_r(dir, &entry, &entryPtr); while (entryPtr != NULL) { if (entry.d_type == DT_REG) { string strFileName = entry.d_name; if ("." == strFileName || ".." == strFileName) { } else { if (getFileLength(strRealPath + "/" + strFileName) == blockSize) { vecFileName.push_back(strRealPath + "/" + strFileName); } } } else if(entry.d_type == DT_DIR) { string dir = entry.d_name; if (!("." == dir || ".." == dir)) { getFileNamesInDir(strRealPath + "/" + dir, vecFileName); } } readdir_r(dir, &entry, &entryPtr); } return true; }
這個函式的意思是讀取string strDir目錄下的檔案,存到vecFileName這個vector裡面。其中忽略.和..兩個檔案。
然後遍歷這個vector,對每個元素執行開啟檔案讀取操作就好了。