2010-10-02 121 views
1

好的,所以我使用了mingW,直接结构没有名为d_type或stat,d_stat或dd_stat的变量。我需要知道如何使用我的直接结构来确定我所拥有的是文件还是文件夹。这是我的代码。如何检查目录是文件还是文件夹?

#include <sys/types.h> 
#include <sys/stat.h> 
#include <dirent.h> 
#include <errno.h> 
#include <vector> 
#include <string> 
#include <iostream> 

using namespace std; 

/*function... might want it in some class?*/ 
int getdir (string dir, vector<string> &files) 
{ 
    DIR *dp; 
    struct stat _buf; 
    struct dirent *dirp; 
    if((dp = opendir(dir.c_str())) == NULL) { 
     cout << "Error(" << errno << ") opening " << dir << endl; 
     return errno; 
    } 

    while ((dirp = readdir(dp)) != NULL) { 

     if(stat(dirp->d_name, &_buf) != 0x4) 
     files.push_back(string(dirp->d_name)); 
    } 
    closedir(dp); 
    return 0; 
} 

int main() 
{ 
    string dir = string("."); 
    vector<string> files = vector<string>(); 

    getdir(dir,files); 

    for (unsigned int i = 0;i < files.size();i++) { 
     cout << files[i] << endl; 
    } 
    return 0; 
} 
+0

注意,'STAT()'成功返回0和-1失败,零值不告诉你它是否是一个目录( -1告诉你它不是)。 – 2010-10-02 06:45:17

+0

另外,请查看[SO 3828192](http://stackoverflow.com/questions/3828192/checking-if-a-directory-exist-in-unix-system-call)。 – 2010-10-02 06:48:09

回答

5

boost::filesystem::is_directory() 

//I found it) 

//So, also you can try to call stat() function. (on Windows) 

(^_^)

相关问题