#include <stdio.h>
#include <stdlib.h>
#include <dirent.h>
#include <sys/stat.h>
#include <time.h>
void print_file_info(const char* folder_path) {
DIR* dir;
struct dirent* entry;
struct stat file_stat;
char file_path[256];
struct tm *t;
dir = opendir(folder_path);
if (dir == NULL) {
printf("无法打开文件夹:%s\n", folder_path);
return;
}
while ((entry = readdir(dir)) != NULL) {
sprintf(file_path, "%s/%s", folder_path, entry->d_name);
if (stat(file_path, &file_stat) == -1) {
printf("无法获取文件信息:%s\n", file_path);
continue;
}
if (S_ISREG(file_stat.st_mode)) {
printf("文件名:%s\n", entry->d_name);
printf("文件大小:%ld字节\n", file_stat.st_size);
t=localtime(&file_stat.st_ctime);
printf(" 时间:%04d-%02d-%02d %02d:%02d:%02d\n",t->tm_year+1900,t->tm_mon+1,t->tm_mday,t->tm_hour,t->tm_min,t->tm_sec);
printf("\n");
}
}
closedir(dir);
}
int main() {
const char* folder_path = "/home/linux/test/";
print_file_info(folder_path);
return 0;
}
在main函数中的文件路径使用所需的文件路径。
此代码只实现了关于S_ISREG常规文件的操作,可以用相似方式实现其他类型文件
运行结果如下: