zulme karşı mukavemet!
Süper Üye
[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]
Ö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 ()