Haskell - Dosya Parçalama ve Birleştirme


Webmaster Genel   

Yazar: ByClxon    0 Yorum    148 Görüntüleme
  • Derecelendirme: 0/5 - 0 oy

Paylaşım Tarihi: 13.05.2016, 20:59:56 #1
ByClxon SEA !
Efsane Üye
Status: Çevrimdışı Yorumları:1,011 Konuları:443 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:



PHP Kod:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
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 ()


Kullanıcı İmzası
#fenerbahçeA.A.K.
Resim http://i.hizliresim.com/nErB8V.png
İletişim İçin Facebook;

Sitemize kayıtlı değilseniz linkleri görebilmeniz İçin Kayıt Olun veya Giriş Yapın


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



Resim http://i.hizliresim.com/LQgldG.png






 

         











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

Konuyu Okuyanlar:
1 Ziyaretçi