Rozdeľovanie a spájanie súborov
Jestliže nevidíte správně česká/slovenská písmena, zvolte potřebné kódování manuálně.
Zadanie:
Vytvorte program, ktorý bude schopný podľa parametrov na príkazovom riadku
buď rozdeliť zadaný súbor na viacero menších súborov zadanej veľkosti, alebo
menšie súbory spojiť do väčšieho.
Požiadavky:
- Zdrojový program nazvite
sc.
C
- Program bude svoje parametre preberať z príkazového riadku
- Pre rozdelenie súboru na menšie časti sa program volá s parametrami
s subor velkost
, kde s
znamená rozdelenie (split),
subor
je názov rozdeľovaného súboru a velkost
je požadovaná veľkosť výsledných fragmentov v bajtoch
- Fragmenty (výsledok rozdeľovania) pomenujte pripojením bodky a poradového
čísla fragmentu za názov pôvodného súboru (napr. pri rozdelení súboru
test.dat
na 3 časti vzniknú súbory test.dat.1
,
test.dat.2
a test.dat.3
)
- Pre spojenie súborov volajte program s parametrami
c subor
,
kde c
znamená spájanie (combine) a subor
je názov
výsledného spojeného súboru
- Pri spájaní postupujte analogicky ako pri rozdeľovaní. Postupne do
výsledného súboru vkladajte obsah súborov končiacich sa
.1
,
.2
, ... Skončite, keď sa vám už ďalší súbor nepodarí nájsť
(napr. ak zavoláte program s parametrami c test
, tak vám
vytvorí súbor test
, ktorý vznikol spojením súborov
test.1
, test.2
a test.3
.
V adresári sa môže nachádzať aj súbor test.5
, tento ale už
nebude spracovaný, pretože program skončí pri súbore test.3
,
kedže test.4
už neexistuje)
- Pri nesprávnom použití programu (zlý počet parametrov, neznáme parametre)
vypíšte hlášku o správnom použití programu
- Preklad vykonávajte na počítači aisa.
- Program musí vedieť spracovať aj netextové súbory (obrázky, preložené
programy, zvukové súbory a podobne) tak, aby rozdelením a napokon spojením
fragmentov vznikol pôvodný súbor.
Poznámky:
- Pre ďalšie podrobnosti vám pomôže, ak si spustíte (na aise) vzorové riešenie zo
súboru
/home/jkucera/pb161/cvic9/sc
- Je samozrejmé, že pri rozdeľovaní bude mať v drvivej väčšine prípadov
posledný fragment menšiu dĺžku, než bola požadovaná, čo je ale v poriadku
- Využiť môžete možností triedy
fstream
- Pri načítaní dát používajte "rozumnú" veľkosť bufferu, aby ste zbytočne
nepreťažili počítač, na ktorom (možno viacerí súčasne) program testujete
- Pri rozdeľovaní ukladajte fragmenty do rovnakého adresára, v akom bol
zdrojový súbor. Pri spájaní hľadajte fragmenty v adresári výsledného
súboru (k parametru príkazového riadku stačí pridávať
.1
, ...)
- Pri testovaní môžete využiť utility
split
,
cat
a diff
- Zdrojový tvar vzorového programu má dĺžku 120 riadkov (4501 znakov); študentom však
nie je k dispozícii.
- Tuto úlohu pripravil Radovan Panák