2025-02-27 22:25:34 +08:00

96 lines
2.2 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#include<iostream>
#include<unistd.h> //目录操作
#include<dirent.h> //获取目录列表
using namespace std;
int main()
{
//目录操作
char *getcwd(char *buf, size_t size); //获取当前工作目录
// 函数内用malloc()分配内存要注意使用free()释放
int chdir(const char *path); //切换工作目录
int mkdir(const char *path_name, mode_t mode); //创建目录
//mode为权限如0775不可省略0
int rmdir(const char *path); //删除目录
//获取目录列表
//步骤一
DIR *opendir(const char *path_name); //打开文件目录
//步骤二
struct dirent *readdir(DIR *dirp); //返回struct dirent结构体地址,一次只读取一项
//步骤三
int closedir(DIR *dirp); //关闭目录
/*
DIR *目录指针
struct dirent {
long d_ino; //inode number
off_t d_off // 在目录文件中的偏移
unsigned short d_reclen; //文件名长度
unsigned char d_type; //文件类型 8-常规文件 4-目录
char d_name[NAME_MAX+1]; //文件名最长255
}
*/
/*
int access(const char *path_name, int mode); //可以用来判断用户有没有对文件和目录的权限
#define R_OK 4 //读
#define W_OK 4 //写
#define X_OK 4 //执行
#define F_OK 4 //存在
*/
// 重命名文件
// int rename(const char *oldpath, const char *newpath)
// 删除文件
// int remove(const char *path_name)
/*
#include <sys/stat.h>
struct stat { //存放文件或目录的信息(不完整)
dev_t st_dev; //设备编号
ino_t st_ino; //i-node
mode_t st_mode; //类型和权限
uid_t st_uid; //所有者uid
gid_t st_gid; //所有组
off_t st_size; //大小
size_t st_blocks; //占用文件系统区块数
time_t st_atime; //最后一次被存取或执行
time_t st_mtime; //最后一次被修改
time_t st_ctime; //最后一次属性被更改
}
S_ISREG(st_mode) //文件为真
S_ISDIR(st_mode) //目录为真
int stat(const char *path, struct stat *buf); //获取信息,存到buf中
*/
/*
示例
DIR *dir;
if( (dir=opendir(argv[1])) == nullptr) return -1;
struct dirent *info=nullptr;
while(1) {
if( (info=readdir(dir)) == nullptr) break;
cout << "d_name" << info->d_name << endl;
cout << "d_type" << (int)info->d_type << endl;
}
closedir(dir);
*/
return 0;
}