Haskell - Dosya Parçalama ve Birleştirme


Webmaster Genel   

Yazar: ByClxon    0 Yorum    162 Görüntüleme

Paylaşım Tarihi: 13.05.2016, 20:59:56 #1
ByClxon SEA !
Efsane Üye
Status: Çevrimdışı Yorumları:1,012 Konuları:442 Kayıt Tarihi:07.01.2016 Rep Puanı: 667

Haskell programlama dilinde yazılmış bu fonksiyonda bir dosyanın parçalara bölünmesi ve tekrardan bölünmesi sağlanmıştır. Parçalama işlemi sırasında 2 argüman girilmektedir. Birinci argüman dosyanın yolunu ikincisi ise dosyanın kaç parçaya ayrılacağını belirtmektedir. Dosya parçalama dosya boyutunun parçalanacak sayıya bölünmesine dayanmaktadır. Dosya parçalandıktan sonra ana dosya silinmektedir. Birleştirme işlemi sırasında parçaların bulunduğu konumda dosyanın adı girilir ve dosya birleştirilir ve parçalar silinir.

Ör Komutlar:



parcala "C:\\english.txt" 6
birlestir 
"C:\\english.txt"
Program Kodu :








import System.IO
import System
.Environment
import System
.Directory




main 
=
        getArgs >>= \args ->
        if (length args)== 2 then
        parcala 
(head args) (read(head (tail args))::Integer)
        else if (length args)==1 then
        birlestir 
(head args)
        else
        putStr "Yanlis Kullanim" >>
        return ()




parcala f p =
            openFile f ReadMode >>= \acilan ->
            hFileSize acilan >>= \boyut ->
            parcala2 f acilan (div boyut p0 p >>
            hClose acilan >>
            removeFile f




parcala2 f h kb z p 
=
                   if z==p  then
                   return 
()
                   else
                   openFile 
(f++show(z+1)++".part"WriteMode >>= \parcaci ->
                   parcayazdir h kb parcaci >>
                   parcala2 f h kb (z+1p                




parcayazdir _ 0   parcaci 
hClose parcaci >>
                           return ()            
parcayazdir h kb parcaci  
=
                          hIsEOF h >>= \son ->
                          if son then
                          
return ()
                          else
                          hGetChar h>>= \char ->
                          hPutChar parcaci char>>
                          parcayazdir h (kb-1parcaci
        
        




birlestir f 
birlestir2 f 1




birlestir2 f h 
=
             doesFileExist (f++(show(h))++".part") >>= \son ->
             if son then
             openFile f AppendMode 
>>= \ yazilacak ->
             openFile (f++(show(h))++".part"ReadMode >>= \ acilacak ->
             hFileSize acilacak >>= \ kb ->
             parcayazdir acilacak kb yazilacak >>
             hClose yazilacak >>
             hClose acilacak >>
             removeFile (f++(show(h))++".part") >>
             birlestir2 f (h+1)
             else               return () 

Kullanıcı İmzası
#fenerbahçeA.A.K.
nErB8V.png
İletişim İçin Facebook;

https://www.facebook.com/profile.php?id=100012991933980


Öfkemiz sarsın her yanı, bozkurtlar yürüye yürüye
Dökülsün düşmanın kanı, yaşasın ırkçı TÜRKİYE!

Taşında gözü olanın yurduna MEZAR kazacağız
Hainin, soysuzun, döneğin alnına VATAN yaazcağız
Hainin, soysuzun alnına YAŞASIN TURAN yazacağız!



LQgldG.png






 

         





Önceki Konu Sonraki Konu





Aradığınızı Bulamadınız Mı ?

Konuyu Okuyanlar:
1 Ziyaretçi