Linux目录的读取

  目录是一个文件组织工具,用来将一组文件组织在一起。从技术上,目录就是每个文件的文件名和辅助信息的列表。但是,它可以被概念化的认为是一个文件名的一维数组。
    ls -l / -a 
   该输出在文件名列表的起始处给出了 ./和 ../。这些文件名用来提供用于目录的一个树形层次结构。文件 ./指的是当前目录,即包含了所列出的文件的目录。文件名 ../指的是父目录,即包含当前目录的文件名的目录。使用这两个文件名的目录项用来将目录链接到一起,从而允许将一个目录放在另一个目录的内部。
    OS管理目录的方式与它管理文件的方式极其一致,它维护的是包含目录文件名列表以及每个文件名的额外数据的表格。使用函数opendir(),readdir()和closedir(),可以访问这些表格。代码如下:
////////////////////////////////////////////////////////////////
#include<stdio.h>
#include<dirent.h>
int main(int argc,char** argv[])
{
  DIR* directory;//目录
  struct dirent*  entry;//每个目录项
 
  directory=opendir(".");//打开当前的工作目录,并依次读取所有的目录项
  if(directory==NULL)
   {
     printf("Unable to open directory.\n");
     exit(0);
   }
  while(1)
  {
   entry=readdir(directory);//从目录中读取一项
   if(entry==NULL)//系统维护一个目录指针,该指针自动前移到后续要读取的下一个目录项
    {
      break;
    }
    printf("%s\n",entry->d_name);
  }
   closedir(directory);//关闭对目录的访问
}
 

你可能感兴趣的:(目录)