【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}';