长生栈 长生栈
首页
  • 编程语言

    • C语言
    • C++
    • Java
    • Python
  • 数据结构和算法

    • 全排列算法实现
    • 动态规划算法
  • CMake
  • gitlab 安装和配置
  • docker快速搭建wordpress
  • electron+react开发和部署
  • Electron-创建你的应用程序
  • ImgUI编译环境
  • 搭建图集网站
  • 使用PlantUml画时序图
  • 友情链接
关于
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

Living Team

编程技术分享
首页
  • 编程语言

    • C语言
    • C++
    • Java
    • Python
  • 数据结构和算法

    • 全排列算法实现
    • 动态规划算法
  • CMake
  • gitlab 安装和配置
  • docker快速搭建wordpress
  • electron+react开发和部署
  • Electron-创建你的应用程序
  • ImgUI编译环境
  • 搭建图集网站
  • 使用PlantUml画时序图
  • 友情链接
关于
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • 文件操作

    • Linux文件属性
    • 文件操作
    • 文件操作举例
    • 目录操作
    • 获得目录列表
      • 获得目录列表
        • 打开目录文件
      • 读出目录文件的内容
      • dirent目录结构
      • 关闭目录文件
        • 关闭目录文件
      • ls功能的实现
    • 内存映射
    • 内存映射举例
  • Linux进程和线程

  • Linux信号

  • 进程间通信

  • Socket

  • C语言
  • 文件操作
DC Wang
2023-02-16
目录

获得目录列表

# 获得目录列表

# 获得目录列表

# 打开目录文件

#include <unistd.h>
DIR* opendir(const char* path);
1
2
  • 打开参数path指定的目录,并返回DIR*形态的目录流,和fopen类似,接下

    来对目录的读取和搜索都要使用此返回值。

# 读出目录文件的内容

#include<sys/types.h>
#include<dirent.h>
struct dirent* readdir(DIR* dir);
1
2
3
  • readdir执行成功则返回指向dirent结构的指针,以后每次调用都用新的目录

    项来替换dirent结构。如果有错误发生或读取到目录文件尾则返回NULL。

# dirent目录结构

struct dirent
{ 
    ino_t d_ino;          			//此目录进入点的inode 
    ff_t d_off; 					//目录文件开头至此目录进入点的位移
    signed short int d_reclen; 		//d_name的长度,不包含NULL字符
    unsigned char d_type; 			//d_name所指的文件类型
    har d_name[256]; 				//文件名
};
1
2
3
4
5
6
7
8

# 关闭目录文件

# 关闭目录文件

#include<sys/types.h>
#include<dirent.h>
int closedir(DIR* dir);
1
2
3

# ls功能的实现

#include <stdio.h>
#include <sys/types.h>
#include <dirent.h>

int main(int argc,char *argv[])
{
	DIR* dir;
	struct dirent* p;
	char* path;
	
	if(argc==1)
		path = "./";
	else
		path = argv[1];

	dir=opendir(path);
	p=readdir(dir);
	while(p!=NULL)
	{
		printf("%s\n",p->d_name);
		p=readdir(dir);
	}
	closedir(dir);
	return 0;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
编辑 (opens new window)
#C#Linux#文件操作
上次更新: 2023/02/18, 10:09:42
目录操作
内存映射

← 目录操作 内存映射→

最近更新
01
ESP32-网络摄像头方案
06-14
02
ESP32-PWM驱动SG90舵机
06-14
03
ESP32-实时操作系统freertos
06-14
更多文章>
Theme by Vdoing | Copyright © 2019-2025 DC Wang All right reserved | 辽公网安备 21021102001125号 | 吉ICP备20001966号-2
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式