dir.h
#ifndef _DIR_INFO_H #define _DIR_INFO_H // 《语法篇》的第30章,STL里的一个类模板 #include <vector> using namespace std; struct DirInfo { char name[256]; }; int listdir(const char* dir, vector<DirInfo>& results); #endif
dir.cpp
#include <stdio.h> #include <string.h> #include <unistd.h> #include <sys/types.h> #include <dirent.h> #include "dir.h" // 失败:返回-1;成功,返回0 int listdir(const char* dir, vector<DirInfo>& results) { // 打开目录 DIR * _dir = opendir(dir); if(!_dir) { return -1; } // 读取目录 dirent* entry = readdir(_dir); while(entry) { const char* name = entry->d_name; if(strcmp(name, ".") != 0 && strcmp(name, "..") != 0) { //printf("found entry: %s \n", name); DirInfo info; strcpy(info.name, name); results.push_back(info); } entry = readdir(_dir); } // 关闭目录 closedir(_dir); return 0; }
main.cpp
#include <stdio.h> #include "dir.h" int main() { vector<DirInfo> results; int ret = listdir("/home/mytest/project/K12_02/aaa", results); if(ret == 0) { for(int i=0; i<results.size(); i++) { printf("got: %s \n", results[i].name); } } return 0; }