频道栏目
首页 > 系统 > Linux > 正文

unix下面目录的详细操作(包括实现给定目录遍历下面所有文件)

2012-07-20 10:21:07           
收藏   我要投稿


unix下面目录的详细操作(包括实现给定目录遍历下面所有文件)

 

与目录相关的有:

  www.2cto.com  

#include<dirent.h>

(1)DIR *opendir(const char *pathname);

打开一个目录,并且返回一个DIR类型的指针

(2)struct dirent *readdir(DIR *dp);

读一个目录并且返回一个dirent类型的指针。

(3)void rewinddir(DIR *dp);

(4)long telldir(DIR *dp);

(5)void seekdir(DIR *dp,long loc);

 

与目录操作有关的结构体有:

dirent结构体:

struct dirent {

ino_t d_ino; /* 索引号 */

off_t d_off; /* 下一个偏移量 */

unsigned short d_reclen; /* 本记录长度 */

unsigned char d_type; /* 文件类型 */

char d_name[256]; /* 文件名 */

};

  www.2cto.com  

DIR结构体

struct __dirstream

  {

    void *__fd;                        /* `struct hurd_fd' pointer for descriptor.  */

    char *__data;                /* Directory block.  */

    int __entry_data;                /* Entry number `__data' corresponds to.  */

    char *__ptr;                /* Current pointer into the block.  */

    int __entry_ptr;                /* Entry number `__ptr' corresponds to.  */

    size_t __allocation;        /* Space allocated for the block.  */

    size_t __size;                /* Total valid data in the block.  */

    __libc_lock_define (, __lock) /* Mutex lock for this structure.  */

  };

typedef struct __dirstream DIR;

 

应用上面的所有知识可以解决有关目录操作的所有问题了。下面写了一个简单的程序来说明相关函数的应用:

 

题目:给定一个目录,然后遍历目录下面所有的文件,并打印文件名

 

#include<dirent.h>

 

#include<stdio.h>

int main(int argc,char **argv)

{  www.2cto.com  

   DIR *dirp;

   struct dirent *direntp;

 

   if(argc!=2)

   {

       printf("formant error!\n");

   }

   

   dirp=opendir(argv[1]);

   while((direntp=readdir(dirp))!=NULL)

     {

          printf("%s\n",direntp->d_name);

     }

   close(dirp);

   exit(0);

}

 

 

作者 liangxanhai

相关TAG标签 目录 文件
上一篇:linux lvm使用
下一篇:Fedora下如何解压缩windows下的.rar压缩文件(注:yum install unrar是无效的)
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站