零售户电商网站订货网址,dw做购物网站,购物网站建设方案,将网站源码下载下来如何使用Linux C目录操作 宗旨#xff1a;技术的学习是有限的#xff0c;分享的精神是无限的。 Linux思想“一切皆文件”#xff0c;目录也是文件#xff0c;只是存储的内容有别于普通文件。目录文件中存储的该目录下所有的文件及子目录文件的信息#xff0c;inode节点。
一、打开…Linux C目录操作 宗旨技术的学习是有限的分享的精神是无限的。 Linux思想“一切皆文件”目录也是文件只是存储的内容有别于普通文件。目录文件中存储的该目录下所有的文件及子目录文件的信息inode节点。
一、打开/关闭目录文件
1、 opendir ——打开目录 1函数原型 #include dirent.h
DIR *opendir(const char *dirname); 2函数参数 dirname要打开的目录路径
3返回值 执行成功返回一个目录流指针与文件流类似直接用就行失败返回NULL。 2、 closedir ——关闭指定的目录流 1函数原型 #include dirent.h
int *closedir(DIR *stream); 2函数参数 stream目录流指针类似于文件流指针fp一样
3返回值 执行成功返回0执行失败返回-1。
这两函数操作的对象DIR对用户层是透明不必关心其实现细节。
【typedef struct dirstream DIR】 二、读/写目录内容
1、 readdir ——读取目录内容目录下存储的是该目录下的文件名和对应的磁盘inode信息位置读取目录内容就是读取该目录下的文件名及文件信息。 1 函数原型 struct dirent *readdir(DIR *stream)
struct dirent
{long d_ino; // inode值off_t d_off; //从目录开始到当前目录条的距离unsigned shortd_reclen; // 存储文件名的空间大小unsigned char d_type; // 文件类型char d_name[256]; // 文件名’\0’结束
}; 2函数参数 stream目录流指针
3返回值 每调用一次返回指向下一个目录的指针失败返回NULL。 2、 readdir_r ——读取目录内容readdir在多线程中不安全readdir_r解决了多线程中不安全的问题 1函数原型 int readdir_r(DIR *stream, struct dirent *entry, struct dirent **result); 2函数参数 stream目录流指针 entry表示第一个参数所引用的目录流中的当前位置 result指示的位置存储指向该结构的目录信息
3返回值 返回成功在第三个参数返回一个指向描述目录条目的struct dirent类型的指针到达目录结尾则第三个参数中返回NULL指针函数返回0执行失败返回-1. 三、定位目录位置
1、 telldir ——目录流相关联的当前位置 1函数原型 long int telldir(DIR *stream); 2函数参数 stream目录流指针
3返回值 成功返回一个long类型的位置值指示目录中的当前位置失败返回-1。 2、 seekdir ——在目录流中设置下一个readdir操作的位置 1函数原型 void seekdir(DIR *stream, long int loc); 2函数参数 stream目录流指针 loc从telldir()获取的目录流中的一个位置
3返回值 无返回值错误将设置errno
3、 rewinddir ——将目录流的位置重置到目录的开头 1函数原型 void rewinddir(DIR *stream); 2函数参数 stream目录流指针
3返回值 将stream引用的目录流的位置重置到目录的开头。 四、添加和删除目录
1、 mkdir ——创建一个目录 1函数原型 int mkdir(const char *path, mode_t mode); 2函数参数 path欲创建的文件的路径 mode目录的访问权限【mode~umask0777】
3返回值 执行成功返回0失败返回-1。 2、 rmdir ——删除目录 1函数原型 int rmdir(const char *path); 2函数参数 path欲删除的目录文件路径
3返回值 执行成功返回0失败返回-1。 五、获取当前工作路径操作 char *getcwd(char *buf, size_t size); // 将当前路径的绝对路径置于buf并返回bufsize的大小必须比返回的路径名长度大1否则返回NULLchar *get_current_dir_name(void);// 成功返回绝对路径失败返回NULLspan stylefont-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255); /span #include stdio.h
#include stdlib.h
#include dirent.hint main(int argc, char *argv[]) /* 浏览指定文件夹下的文件 */
{DIR *stream;struct dirent *dp;stream opendir(argv[1]);while((dp readdir(stream)) ! NULL){if(dp-d_name[0] .){continue;}printf(%s , dp-d_name);}closedir(stream);return 0;
}