void getAllFiles( const char* dir_name, vector<string>&files)
{
if( NULL == dir_name )
{
cout<<" dir_name is null ! "<<endl;
return;
}
struct stat s;
lstat( dir_name , &s );
if( ! S_ISDIR( s.st_mode ) )
{
return;
}
struct dirent * filename;
DIR * dir;
dir = opendir( dir_name );
if( NULL == dir )
{
return;
}
int iName=0;
while( ( filename = readdir(dir) ) != NULL )
{
if( strcmp( filename->d_name , "." ) == 0 ||
strcmp( filename->d_name , "..") == 0)
continue;
char wholePath[128] = {0};
cout<<filename->d_name<<endl;
sprintf(wholePath, "%s/%s", dir_name, filename->d_name);
string filename = wholePath;
files.push_back(filename);
//cout << "wholePath= " << wholePath << endl;
}
}
getAllFiles(fpath, files);
sort(files.begin(), files.end());
readdir()方法获取文件名是按照磁盘上的存储位置来读取的,其顺序是按照struct dirent中的d_off来排序的,并不是按照文件名称或者文件创建时间排序。不能默认为文件名按照名称排序。