最近使用了stat函数出现一种情况
count_tiff_file = 0;
DIR *pDir;
struct dirent *pEntry;
struct stat buf;
pDir = opendir(PATH);
if(pDir == NULL)
{
qDebug() << "opendir error";
return;
}
while((pEntry = readdir(pDir)) != NULL)
{
if(strcmp(pEntry->d_name, ".") == 0 || strcmp(pEntry->d_name, "..") == 0)
continue; //jump not show file
if(pEntry->d_type == 8) //general file
{
strcpy(tName_Size[file++], pEntry->d_name); //保存遍历到的文件名
int ret = stat(pEntry->d_name, &buf);
if(ret < 0)
{
qDebug() << "stat fail ";
continue;
}
cout << buf.st_size << endl;
}
}
closedir(pDir);
发现文件不存在。后来发现原来opendir打开和stat读取没有关系,即使打开目录到当前文件夹下,stat函数还是需要绝对路径找到文件,才能读出文件大小。将stat(pEntry->d_name, &buf);改为stat(path, &buf);就可以了。