opendir
函数
包含头文件: 确保在代码中包含必要的头文件。
#include <stdio.h>
#include <dirent.h>
#include <sys/types.h>
打开目录: 使用 opendir
函数打开目录。该函数返回一个指向 DIR
类型的指针。
DIR *dir = opendir("/path/to/directory");
if (dir == NULL) {
perror("opendir");
return 1;
}
读取目录内容: 使用 readdir
函数读取目录内容。该函数返回一个指向 struct dirent
类型的指针。
struct dirent *entry;
while ((entry = readdir(dir)) != NULL) {
printf("%s\n", entry->d_name);
}
关闭目录: 使用 closedir
函数关闭目录。
closedir(dir);
opendir(const char *name)
: 打开指定名称的目录,返回指向DIR
结构的指针。如果失败,返回NULL
。readdir(DIR *dirp)
: 读取目录中的下一个条目,返回指向struct dirent
结构的指针。如果读取到目录末尾或发生错误,返回NULL
。closedir(DIR *dirp)
: 关闭由opendir
打开的目录流。
#include <stdio.h>
#include <dirent.h>
#include <sys/types.h>
int main() {
DIR *dir;
struct dirent *entry;
// 打开目录
dir = opendir("/path/to/directory");
if (dir == NULL) {
perror("opendir");
return 1;
}
// 读取目录内容
while ((entry = readdir(dir)) != NULL) {
printf("%s\n", entry->d_name);
}
// 关闭目录
closedir(dir);
return 0;
}
struct dirent
结构
struct dirent
结构定义在 <dirent.h>
头文件中,包含以下成员:
struct dirent {
ino_t d_ino; /* inode number */
off_t d_off; /* offset to the next dirent */
unsigned short d_reclen; /* length of this record */
unsigned char d_type; /* type of file */
char d_name[256]; /* filename */
};
常用成员包括:
d_name
: 文件名。d_type
: 文件类型。DT_BLK
: 块设备DT_CHR
: 字符设备DT_DIR
: 目录DT_FIFO
: FIFO (命名管道)DT_LNK
: 符号链接DT_REG
: 常规文件DT_SOCK
: 套接字DT_UNKNOWN
: 未知类型
readdir
函数
包含头文件: 确保在代码中包含必要的头文件。
#include <stdio.h>
#include <dirent.h>
#include <sys/types.h>
打开目录: 使用 opendir
函数打开目录。该函数返回一个指向 DIR
类型的指针。
DIR *dir = opendir("/path/to/directory");
if (dir == NULL) {
perror("opendir");
return 1;
}
读取目录内容: 使用 readdir
函数读取目录内容。该函数返回一个指向 struct dirent
类型的指针。
struct dirent *entry;
while ((entry = readdir(dir)) != NULL) {
printf("%s\n", entry->d_name);
}
关闭目录: 使用 closedir
函数关闭目录。
closedir(dir);
closedir
函数
int closedir(DIR *dirp);
- 参数:
dirp
是一个指向DIR
结构的指针,表示要关闭的目录流。 - 返回值: 如果成功,返回
0
。如果失败,返回-1
,并设置errno
以指示错误。
使用步骤
- 打开目录: 使用
opendir
函数打开目录。 - 读取目录内容: 使用
readdir
函数读取目录内容。 - 关闭目录: 使用
closedir
函数关闭目录。
chdir
chdir
用于更改当前工作目录。
函数声明
int chdir(const char *path);
参数
path
: 目标目录的路径。
返回值
- 成功返回
0
。 - 失败返回
-1
,并设置errno
。
#include <unistd.h>
#include <stdio.h>
int main() {
if (chdir("/path/to/directory") == -1) {
perror("chdir");
return 1;
}
// 成功更改工作目录
return 0;
}
getcwd
getcwd
用于获取当前工作目录的路径。
函数声明
char *getcwd(char *buf, size_t size);
参数
buf
: 存储路径的缓冲区。size
: 缓冲区的大小。
返回值
- 成功返回
buf
。 - 失败返回
NULL
,并设置errno
。
mkdir
mkdir
用于创建新目录。
函数声明
int mkdir(const char *pathname, mode_t mode);
参数
pathname
: 要创建的目录的路径。mode
: 目录的权限位。
返回值
- 成功返回
0
。 - 失败返回
-1
,并设置errno
。
#include <sys/stat.h>
#include <sys/types.h>
#include <stdio.h>
int main() {
if (mkdir("/path/to/directory", 0755) == -1) {
perror("mkdir");
return 1;
}
// 成功创建目录
return 0;
}
rmdir
rmdir
用于删除空目录。
函数声明
int rmdir(const char *pathname);
参数
pathname
: 要删除的目录的路径。
返回值
- 成功返回
0
。 - 失败返回
-1
,并设置errno
。
#include <unistd.h>
#include <stdio.h>
int main() {
if (rmdir("/path/to/directory") == -1) {
perror("rmdir");
return 1;
}
// 成功删除目录
return 0;
}
stat
stat
用于获取文件或目录的状态信息。
函数声明
int stat(const char *pathname, struct stat *statbuf);
参数
pathname
: 文件或目录的路径。statbuf
: 存储状态信息的结构体指针。
返回值
- 成功返回
0
。 - 失败返回
-1
,并设置errno
。
#include <sys/stat.h>
#include <sys/types.h>
#include <stdio.h>
int main() {
struct stat sb;
if (stat("/path/to/file_or_directory", &sb) == -1) {
perror("stat");
return 1;
}
printf("File size: %lld bytes\n", (long long) sb.st_size);
printf("Permissions: %o\n", sb.st_mode & 0777);
printf("Last modified: %ld\n", (long) sb.st_mtime);
return 0;
}
标签:文件目录,函数,return,opendir,相关,操作,include,目录,dir
From: https://blog.csdn.net/a8687216/article/details/141016811