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