[B]Haskell programlama dilinde yazılmış bu fonksiyonda bir dosyanın parcalara bolunmesi ve tekrardan bolunmesi sağlanmıştır. Parcalama işlemi sırasında 2 arguman girilmektedir. Birinci arguman dosyanın yolunu ikincisi ise dosyanın kac parcaya ayrılacağını belirtmektedir. Dosya parcalama dosya boyutunun parcalanacak sayıya bolunmesine dayanmaktadır. Dosya parcalandıktan sonra ana dosya silinmektedir. Birleştirme işlemi sırasında parcaların bulunduğu konumda dosyanın adı girilir ve dosya birleştirilir ve parcalar silinir. Or Komutlar: PHP Code:
parcala "C:\\english.txt" 6birlestir "C:\\english.txt"Program Kodu : import System.IOimport System.Environmentimport 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 ()
__________________
Haskell - Dosya Parcalama ve Birleştirme
Programlama0 Mesaj
●29 Görüntüleme
- ReadBull.net
- Programlama ve Yazılım
- Programlama
- Haskell - Dosya Parcalama ve Birleştirme