• Üyelik paylaşımı yasaktır! Hesabınızı başkalarına vermeyin! Hesap paylaşımları yasaklama ile sonuçlanacaktır.

Haskell - Dosya Parçalama ve Birleştirme

Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...

ByClxon

Süper Üye
Katılım
7 Ocak 2016
Mesajlar
955
Beğeni Puanı
4
Yaş
22
[font='Titillium Web', sans-serif]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:
[/FONT]



PHP:
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 p) 0 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+1) p                




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-1) parcaci
        
        




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 ()
 
Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...


Üst Alt