readdir
函数本身并不直接获取文件的属性,它主要用于读取目录中的条目。在 C 语言中,readdir
函数的原型在 <dirent.h>
头文件中定义,其基本用法如下:
#include <dirent.h>
DIR *opendir(const char *name);
struct dirent *readdir(DIR *dirp);
int closedir(DIR *dirp);
opendir
打开一个目录流。readdir
读取目录流中的下一个条目。closedir
关闭目录流。readdir
返回一个指向 struct dirent
的指针,该结构包含目录条目的信息,如文件名,但不包括文件的详细属性。struct dirent
的定义通常如下:
struct dirent {
ino_t d_ino; /* Inode number */
off_t d_off; /* Not used by all filesystems */
unsigned short d_reclen; /* Length of this record */
unsigned char d_type; /* Type of file */
char d_name[]; /* Null-terminated filename */
};
如果你需要获取文件的详细属性,可以使用其他函数,例如:
stat
:获取文件的状态信息。lstat
:类似于 stat
,但如果文件是一个符号链接,则获取链接本身的状态而不是链接指向的文件的状态。fstat
:通过文件描述符获取文件的状态信息。这些函数的原型在 <sys/stat.h>
头文件中定义。例如,使用 stat
函数获取文件属性的示例代码如下:
#include <sys/stat.h>
#include <stdio.h>
int main() {
struct stat file_stat;
int result = stat("example.txt", &file_stat);
if (result == 0) {
printf("File size: %ld bytes\n", file_stat.st_size);
printf("Last modified time: %s", ctime(&file_stat.st_mtime));
// 更多属性...
} else {
perror("stat");
}
return 0;
}
在这个例子中,stat
函数被用来获取名为 example.txt
的文件的属性,并将结果存储在 file_stat
结构中。然后可以访问结构中的字段来获取文件的大小、最后修改时间等信息。