操作目录重要函数
- avio_open_dir() 打开目录
- avio_read_dir() 读取目录中每一项文件的信息,包括文件的大小等
- avio_close_dir() 关闭目录,释放资源
操作目录重要结构体
- AVIODirContext 操作目录的上下文
- AVIODirEntry 目录项,用于存放文件名,文件大小等信息
实战 简单的ls命令
在linux、mac等系统下,终端输入ls就可以看见当前目录下有哪些文件,他们的属性是什么
使用ls -alt,可以查看更详细的信息
#include <libavutil/log.h>
#include <libavformat/avformat.h>
int main(int argc, char *argv[])
{
int ret;
AVIODirContext *ctx = NULL;
AVIODirEntry *entry = NULL;
av_log_set_level(AV_LOG_INFO);
ret = avio_open_dir(&ctx, "./", NULL); //打开目录
if(ret < 0){
av_log(NULL, AV_LOG_ERROR, "Cant open dir:%s\n", av_err2str(ret));
return -1;
}
while(1){
avio_read_dir(ctx, &entry); //读取目录
if(ret < 0){
av_log(NULL, AV_LOG_ERR, "Cant rad dir:%s\n", av_err2str(ret));
goto __fail;
}
if(!entry){
break; //如果读到了末尾,打破循环退出
}
av_log(NULL, AV_LOG_INFO, "%12"PRId64" %s \n", entry->size, entry->name);
avio_free_directory_entry(&entry);
}
__fail:
avio_close_dir(&ctx);
return 0;
}