Haskell - Dosya Parçalama ve Birleştirme


Webmaster Genel   

Yazar: ByClxon    0 Yorum    122 Görüntüleme
  • 0 Oy - 0 Yüzde

Paylaşım Tarihi: 13.05.2016, 20:59:56 #1
ByClxon SEA !
Efsane Üye
Status: Çevrimdışı Yorum Sayısı:1,020 Konu Sayısı:444 Üyelik Tarihi:07.01.2016 Rep Puanı: 664

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:



PHP Kod:
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.
İmage
İletişim İçin Facebook;

linkleri görmek için giriş yapmanız. Yada üye olmanız gerekir.


Ö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!



İmage






 

         








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

Konuyu görüntüleyenler:
1 Misafir