sayfa başı

22 Mart 2015 Pazar

Bir Dizindeki Tüm Dosyalara Ulaşmak

    Öncelikle Merhaba. Bu yazımda bir dizin üzerinde işlemler yapacağız. Ufak bir örnek üzerinden yapılan işlemleri açıklayacağız.
    İlk olarak dizin üzerinde işlem yapacağımızdan kullanacağımız başlık dosyasını taktim edeyim; #include <dirent.h> Örneğimize geçmeden önce bir klasör içerisinde bulunabilecek verilere bakalım.
  • Block Device 
  • Char Device
  • Directory
  • Pipe (FIFO)
  • Symbolic Link
  • Regular File
  • Unix Domain Socket
  • Unknown
    Bir klasör içerisindeki yukarıdaki gruplardan birine ait olan tüm dosyaları sıralayabiliriz. Örneğin Linux cihazımızn /dev/ dizini altında ne kadar Char Device türünde dosya varsa ekrana yazalım.
 
#include <stdio.h>
#include <string.h>
#include <dirent.h>


int main(void)
{
     DIR *dir;
     struct dirent *dirent;

     dir = opendir("/dev/");

     if (dir)
     {
        while (NULL != (dirent = readdir(dir)))
          {
               if (DT_CHR == dirent->d_type)
               {
                       printf(">> %s \n", dirent->d_name);
                }
          }
     }

    return 0;
}
 
    İlk olarak opendir ile istenilen dizine gittik, daha sonra readdir ile buradaki tüm verileri (dizin, char device, regular file) ayırt etmeden okuduk. Örneğimizde Char Device istendiği için if sogusu içinde DT_CHR ile sadece char device dosya isimlerini ekrana basmış oldu(Not: standart output consol olarak düşünüldü).
Diğer dosya türü sorgusu için <dirent.h> başlık dosyasında tanımlanan makroları kullanabilirsiniz. 

       DT_BLK       Block Device.
       DT_CHR      Character Device.
       DT_DIR        Directory(klasör).
       DT_FIFO      Pipe (FIFO).
       DT_LNK      Symbolic link.
       DT_REG      Regular file(sıradan dosyalar, text, zip, odt...)
       DT_SOCK     This is a UNIX domain socket.
       DT_UNKNOWN  The file type is unknown


Faydalanacağını düşündüğünüz kişilere iletin, eksik ya da yanlış olduğunu düşündüğünüz yerleri belirtin.


Şimdi Yazmaya Devam ....




Hiç yorum yok:

Yorum Gönder

Son Ütücü