前言
我们经常需要读取一个目录下的所有文件名,所以一下介绍如何读取一个文件下的目录,下面我演示一下如何读取下面这个目录的文件名
这些.mp3结尾的文件存在music目录下,我们把一一把这些文件名读取出来
1.打开文件目录
#include <sys/types.h>
#include <dirent.h>
DIR *opendir(const char *name);
功能:打开一个目录
参数:
name:目录名
返回值:
成功:返回指向该目录结构体指针 失败:NULL
2.读取目录
#include <dirent.h>
struct dirent *readdir(DIR *dirp);
功能:
读取目录
参数:
dirp:opendir的返回值
返回值:
成功:目录结构体指针 失败:NULL
打开目录之后就可以通过这个结构体读取目录了。
结构体说明:
struct dirent
{
ino_t d_ino; // 此目录进入点的inode
off_t d_off; // 目录文件开头至此目录进入点的位移
signed short int d_reclen; // d_name 的长度, 不包含NULL 字符
unsigned char d_type; // d_type 所指的文件类型
char d_name[256]; // 文件名
}
3.关闭目录
#include <sys/types.h>
#include <dirent.h>
int closedir(DIR *dirp);
功能:关闭目录
参数:
dirp:opendi
r返回的指针 返回值:成功:0 失败:-1
完整代码演示
读取music目录下的.mp3类型的文件名
//读取歌词的列表
void read_lryic(char *path)
{
DIR *dir = opendir(path);//打开目录文件
struct dirent *entry;
while((entry = readdir(dir))!=0)
{
if(strstr(entry->d_name,".mp3"))
{
printf("%s\n", entry->d_name);
}
}
}