Giriş
Şu satırları dahil ederiz.
Metodun açıklaması şöyle.
opendir ile dizini açmak için şöyle yaparız.
Şöyle yaparız.
Tüm openXXX metodlarında olduğu gibi açılan kaynağı kapatmak gerekir.
Açıklaması şöyle.
Örnek
Tüm yolun ismini almak için şöyle yaparız.
Şöyle yaparız.
Şöyle yaparız
Dosyaları dolaşırken büyük ihtimalle şu sanal dizinleri atlamak isteriz. Şöyle yaparız.
Şu satırları dahil ederiz.
d_name alanı
Nesnenin ismine d_name ile erişiriz. Nesneye olan tüm yolu vermez! Nesneyi okumak için şöyle yaparız
Dolaşılan nesnenin tipi d_type alanı ile bulunur. Örnekte nesne dizin ise pas geçiliyor.
Şu satırları dahil ederiz.
#include <sys/types.h>
#include <dirent.h>Metodun açıklaması şöyle.
ÖrnekThe opendir() function opens a directory stream corresponding to the directory name, and returns a pointer to the directory stream.The opendir() and fdopendir() functions return a pointer to the directory stream. On error, NULL is returned, and errno is set appropriately.
opendir ile dizini açmak için şöyle yaparız.
DIR* directory = opendir(".");if (directory == NULL) {
  printf("Error\n");
  exit(2);
}Şöyle yaparız.
void walk (const string &path, function<void (const string &)> talk)
{
  if (auto dir = opendir (path.c_str ())) {
    while (auto f = readdir (dir)) {
      auto name = f->d_name;
      auto type = f->d_type;
      switch (type)
      {
        case DT_DIR: walk (path + name + "/", talk); break;
        case DT_REG: talk (path + name            ); break;
      }
    }
    closedir(dir);
  }
}Tüm openXXX metodlarında olduğu gibi açılan kaynağı kapatmak gerekir.
closedir (directory);Açıklaması şöyle.
readdir() returns the name of the subdirectories, not the path to get to them.Açıklaması şöyle.
The readdir() function shall return a pointer to a structure representing the directory entry at the current position in the directory stream specified by the argument dirp, and position the directory stream at the next entry. It shall return a null pointer upon reaching the end of the directory stream. The structure dirent defined in the <dirent.h> header describes a directory entry.
Tüm yolun ismini almak için şöyle yaparız.
while ((ent = readdir (directory)) != NULL) 
{
  std::string path = dir;
  path += ent->d_name;
  if (stat(path.c_str(), &dir_stat)== 0) {...}
}Şöyle yaparız.
struct dirent *dirent;
while ((dirent = readdir (dirp)) != NULL) {
  ...
}Şöyle yaparız
struct dirent* direntp = readdir(dirp);
while(direntp != NULL)
{
    // all your work here
    direntp = readdir(dirp);
}Dosyaları dolaşırken büyük ihtimalle şu sanal dizinleri atlamak isteriz. Şöyle yaparız.
if( (strcmp (direntp->d_name, ".")==0) || (strcmp(direntp->d_name, "..")==0) )
{
  continue;
}Şu satırları dahil ederiz.
#include <sys/types.h>
#include <dirent.h>
readdir çağrısı bu yapıyı döner. 
Nesnenin ismine d_name ile erişiriz. Nesneye olan tüm yolu vermez! Nesneyi okumak için şöyle yaparız
fopen (file->d_name, "r+"); 
Nesne hakkında bilgi almak için şöyle yaparız.
struct stat stat;
stat (direntp->d_name, &stat);
d_type alanı
Açıklaması şöyleunsigned char       d_type;     /* Type of file; not supported
                                by all filesystem types */Dolaşılan nesnenin tipi d_type alanı ile bulunur. Örnekte nesne dizin ise pas geçiliyor.
if (direntp->d_type != DT_REG )
{
   continue;
} 
 
Hiç yorum yok:
Yorum Gönder