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

Anasayfa Programlama Haskell Dosya Parçalama ve Birleştirme


Dosya Parçalama ve Birleştirme

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 :

  1.  
  2. import System.IO
  3. import System.Environment
  4. import System.Directory
  5.  
  6. main =
  7.          getArgs >>= \args ->
  8.          if (length args)== 2 then
  9.          parcala (head args) (read(head (tail args))::Integer)
  10.          else if (length args)==1 then
  11.          birlestir (head args)
  12.          else
  13.          putStr "Yanlis Kullanim" >>
  14.          return ()
  15.  
  16. parcala f p =
  17.              openFile f ReadMode >>= \acilan ->
  18.              hFileSize acilan >>= \boyut ->
  19.              parcala2 f acilan (div boyut p) 0 p >>
  20.              hClose acilan >>
  21.              removeFile f
  22.  
  23. parcala2 f h kb z p =
  24.                     if z==p  then
  25.                     return ()
  26.                     else
  27.                     openFile (f++show(z+1)++".part") WriteMode >>= \parcaci ->
  28.                     parcayazdir h kb parcaci >>
  29.                     parcala2 f h kb (z+1) p                
  30.  
  31. parcayazdir _ 0   parcaci = hClose parcaci >>
  32.                             return ()            
  33. parcayazdir h kb parcaci  =
  34.                            hIsEOF h >>= \son ->
  35.                            if son then
  36.                            return ()
  37.                            else
  38.                            hGetChar h>>= \char ->
  39.                            hPutChar parcaci char>>
  40.                            parcayazdir h (kb-1) parcaci
  41.          
  42.          
  43.  
  44. birlestir f = birlestir2 f 1
  45.  
  46. birlestir2 f h =
  47.               doesFileExist (f++(show(h))++".part") >>= \son ->
  48.               if son then
  49.               openFile f AppendMode >>= \ yazilacak ->
  50.               openFile (f++(show(h))++".part") ReadMode >>= \ acilacak ->
  51.               hFileSize acilacak >>= \ kb ->
  52.               parcayazdir acilacak kb yazilacak >>
  53.               hClose yazilacak >>
  54.               hClose acilacak >>
  55.               removeFile (f++(show(h))++".part") >>
  56.               birlestir2 f (h+1)
  57.               else
  58.               return ()
  59.  
 

Yorumlar (0)
Sadece kayıtlı kullanıcılar yorum yazabilir!