1. 程式人生 > >【C++】獲取當前資料夾內的所有檔案

【C++】獲取當前資料夾內的所有檔案

1、64(路徑要到最裡層資料夾)

//path:檔案路徑   files:存檔名的vector  suffix:檔案字尾,不用加點

void get_file_name(string path, vector<string>&  files, string suffix)
{
__int64  Handle;
struct __finddata64_t  FileInfo;
string p;
string suffix2 = "\\*." + suffix;
if ((Handle = _findfirst64(p.assign(path).append(suffix2).c_str(), &FileInfo)) != -1)
{
do{
files.push_back(p.assign(path).append("\\").append(FileInfo.name));
} while (_findnext64(Handle, &FileInfo) == 0);
_findclose(Handle);
}
}

2、32(引數意義一致,非原創,沒找到原文連結,侵權刪,可獲取子資料夾內的檔案)

void get_file_name(string path, vector<string>&  files, string suffix)
{
//獲取檔名列表放到引數中的vector

long hFile = 0;
struct _finddata_t fileinfo;
string p;
//cout << path<< endl;
string suffix2 = "\\*." + suffix;
if ((hFile = _findfirst(p.assign(path).append(suffix2).c_str(), &fileinfo)) != -1)
{
//cout << "sub" << endl;
do{
if ((fileinfo.attrib &  _A_SUBDIR))
{
if (strcmp(fileinfo.name, ".") != 0 && strcmp(fileinfo.name, "..") != 0)
get_file_name(p.assign(path).append("\\").append(fileinfo.name), files, suffix);
}
else
{
files.push_back(p.assign(path).append("\\").append(fileinfo.name));
}
} while (_findnext(hFile, &fileinfo) == 0);
_findclose(hFile);
}
}

3、Matlab

fileFolder=fullfile('E:\test\0001');
dirOutput=dir(fullfile(fileFolder,'*.jpg'));
fileNames={dirOutput.name}';