Programlama | Programlama Dilleri | C Programlama Dili |C++

Anasayfa Programlama Haskell Alt Klasörler de Dahil Olmak Üzere Herhangi Bir Dizindeki Dosyaları Listele


Alt Klasörler de Dahil Olmak Üzere Herhangi Bir Dizindeki Dosyaları Listele

Haskell programlama dilinde yazılmış bu fonksiyonda verilen bir dizin için alt dizinleri de dahil olmak üzere taranır ve sonuç olarak tüm dosyalar kodları yazdığınız x.hs dosyasının bulunduğu dizinde "dosyalar.txt" isimli dosyaya yazılır. Bu dosyaya baktığınızda dosyaların hiyerarşik bir biçimde ; yani herhangi bir dizine ait dosyalar o dizinin isminin sütun hizasından biraz daha içerde olmak üzere yerleştirilir. Bu sayede dosyalarin hangi dizine ait oldukları da rahatça belirlenebilir.

 Ör:

dosyalarilistele "D:\\"

Program Kodu :

  1.  
  2. import System.IO
  3. import System.Environment
  4. import System.Directory
  5.  
  6. dosyalarilistele b =
  7.                   
  8.                    getCurrentDirectory >>= \curdir ->
  9.                    writeFile (curdir++"\\dosyalar.txt") "" >>
  10.                    getDirectoryContents b >>= \dosyalist ->
  11.                    setCurrentDirectory b >>
  12.                    listele "" dosyalist (curdir++"\\dosyalar.txt") >>
  13.                    return ()
  14.  
  15.  
  16. listele  _ [] _ = return ()
  17. listele dl (".":fs) h = listele dl fs h
  18. listele dl ("..":fs) h = listele dl fs h
  19. listele dl (f:fs) h =
  20.                       appendFile h (dl++f++"\n") >>
  21.                       doesDirectoryExist f >>= \dogru ->
  22.                       if dogru then
  23.                       getDirectoryContents f>>= \dosyaic ->
  24.                       setCurrentDirectory f >>
  25.                       listele (dl++" ") dosyaic h >>
  26.                       setCurrentDirectory ".." >>
  27.                       listele dl fs h
  28.                       else
  29.                       listele dl fs h
  30.  
 

Yorumlar (0)
Sadece kayıtlı kullanıcılar yorum yazabilir!
Son Güncelleme ( Cuma, 03 Ağustos 2012 01:06 )