#include <stdio.h>
#include <iostream>
#include <vector>
struct file_info_t
{
unsigned long long ud_tm;
unsigned int file_len;
std::string file_name;
};
unsigned long long get_curr_time()
{
time_t now;
time(&now);
return now;
}
void scan_disk_files(char* path, std::vector<struct file_info_t>& dst, std::vector<string>& vdirs, int& file_numbs)
{
DIR *d = NULL;
struct dirent *dp = NULL;
struct stat st,lst;
char p[1024] = {0};
int ret;
char *dumpstr = "/";
char *ch = "";
char tmp[1024];
int rlen;
if (path[0] == 0)
{
return ;
}
if (path[strlen(path) - 1] == '/')
{
//ch = "";
}else {
ch = dumpstr;
}
memset((void *)&st, 0, sizeof(st));
if(stat(path, &st) < 0 || !S_ISDIR(st.st_mode)) {
return;
}
if(!(d = opendir(path))) {
return;
}
usleep(1);
while((dp = readdir(d)) != NULL) {
if((!strncmp(dp->d_name, ".", 1)) || (!strncmp(dp->d_name, "..", 2)))
continue;
memset(p, 0, 1024);
snprintf(p, sizeof(p) - 1, "%s%s%s", path, ch, dp->d_name);
memset((void *)&st, 0, sizeof(st));
memset((void *)&lst, 0, sizeof(st));
ret = stat(p, &st);
lstat(p, &lst);
rlen = snprintf(tmp, 1024, "%s%s%s",path, ch, dp->d_name);
if(!S_ISLNK(lst.st_mode) && S_ISREG(st.st_mode))
{
struct file_info_t ft;
ft.ud_tm = st.st_mtime;
ft.file_len = st.st_size;
ft.file_name = tmp;
dst.push_back(ft);
file_numbs++;
memset(tmp, 0, rlen);
} else if(!S_ISLNK(lst.st_mode) && S_ISDIR(st.st_mode)){
//microsecond(2);
vdirs.push_back(tmp);
scan_disk_files(p, dst, vdirs, file_numbs);
}
}
closedir(d);
return;
}
int main(int argc, char *argv[])
{
std::vector<struct file_info_t> vfiles;
std::vector<std::string> vdirs;
int m_dwFileTotalNum = 0;
char *g_scan_path = "/";
printf("\n Start scan disk time:%llu \n", get_curr_time());
scan_disk_files(g_scan_path, vfiles, vdirs, m_dwFileTotalNum);
std::vector<struct file_info_t>::iterator it = vfiles.begin();
printf("\n file list\n\n");
for(; it != vfiles.end(); it++)
{
printf("create time:%lld, length:%d, name: %s\n", (*it).ud_tm, (*it).file_len, (*it).file_name.c_str());
}
printf("\n");
printf("\n End scan disk time:%llu \n scan files:%d \n", get_curr_time(), m_dwFileTotalNum);
return 0;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· AI Agent开发,如何调用三方的API Function,是通过提示词来发起调用的吗