Program fájlok vágására

Megkínálhatom egy programot, amely lehet vágni egy előre meghatározott kép egy részét a hossza, vagy megkapja a fájl része megadott hosszúságú kezdve a megadott eltolás, vagy hagyja ki az első X byte, és a maradék darabokra vágjuk méretétől Y bájt vagy fájlt felosztani részekre X, Y, Z bájtban és a maradék # 133; Amint később láthatja, a program lehetővé teszi, hogy a fájlt részekre bontva és összetettebb módon vágja le.

(Megjegyzem, hogy valójában a "vágás" # 151; nem elég pontos kifejezés, mert a program nem változtatja meg a forrásfájlt, de új fájlokat hoz létre # 151; az eredeti részei.)

A program indításakor meg kell adni a forrásfájl nevét, a kapott fájlok nevét a parancssorban (a kiterjesztés nélkül # 151; akkor automatikusan létrejön), és parancsok, amelyek meghatározzák, hogyan kell a fájlt részekre osztani.

A forrásfájlnak az aktuális könyvtárban kell lennie, és ott is létrejönnek a kimeneti fájlok. Az első generált fájl kiterjesztése "001" lesz, a második # 151; "002" és így tovább (ha több mint 999 részt kapsz, akkor csak az első 999-et veszik fel).

Most arról a parancsokról, amelyek meghatározzák, hogy a fájl részekre osztható-e. Egy vagy több parancs megadható; ha több van, vesszővel elválasztva. Összesen négyféle parancsot használhat:

rögzíteni egy részét n hosszúságú byte az aktuális pozíció a bemeneti fájl (ha kevesebb, mint n bájt, a méret a rögzített rész egyenlő lesz a maradék a fájlt a végén a forrásfájl);

ugrás az n bájtból a forrás fájl aktuális pozíciójából (ha a forrásfájl végéig kevesebb n bájt maradt, az összes többi bájtot kihagyjuk);

írja a hossza n byte hosszúságú részeit a forrásfájl aktuális pozíciójából a fájl végének eléréséig (tehát az utolsó rögzített rész hossza kisebb lehet, mint n);

Rögzítse a részt az aktuális pozícióból kiindulva a forrásfájlban és a fájl végére. Ez a parancs nyilvánvalóan csak az utolsó lehet.

Minden parancs n # 151; szám 1-től 0x7FFFFFFF (2147483647) írt decimális vagy hexadecimális (rögzítésekor hexadecimális számot kell megelőznie szimbólumok «0x», a karakter nyilvántartást vezetnek a szám nem számít).

A program képes kezelni akár 64 csapat (értéke határozza meg MAX_COMM állandók a forráskód a program), de sok csapat még mindig nem adja a megfelelő korlátozások miatt a hossza a parancssorban a DOS.

A parancsok abban a sorrendben hajtódnak végre, amelyben rögzítették őket. Az első parancs végrehajtása előtt az aktuális pozíció a forrásfájlban # 151; ez a fájl kezdete. A program elfogy, ha az összes parancs végrehajtásra kerül, vagy ha a forrásfájl vége elérte, vagy ha a fájl 999 része már be van írva, vagy ha valamilyen hiba történt a fájlok feldolgozása közben.

Csak négyféle parancs engedélyezi a fájlok feldolgozását. Az alábbiakban néhány példa található.

  1. Szerezd meg a fájl első 500 bájtját.
  2. Éppen ellenkezőleg, hagyja el az első 500 byte-ot, és töltse le a fájl többi részét.
  3. A fájl egy részét 0x1000-es eltolással kezdve, a kezdetektől és 0x300 bájt hosszúságtól kapja.
  4. A fájlt négy részre osztja: 100, 200, 300 byte és a fennmaradó rész.
  5. Osztja a fájlt 10 000 bájtnyi részre (kivéve talán az utolsó részt).
  6. Húzza át a fájl 0x400 bájtjait, írja be a 123 bájt hosszúságát, majd hagyja el a 0x100 bájtot, és írja le a maradékot.

Vegye figyelembe, hogy nem nagyon nehéz módosítani a programot, és többféle parancsot ad hozzá.

Figyelmet fordítok arra, hogy a kapott fájl nem egyezzen meg a forrásfájlok egyikével sem, ellenkező esetben elveszhet a forrásfájl tartalma, és a parancs végrehajtása hibával zárul!

A cikkben leírt program nem képes feldolgozni a 2 GB-nál (2147483648 bytes) vagy annál nagyobb fájlokat. A tény az, hogy a program keretében használt könyvtár funkciója, hogy meghatározza a hossza a fájlt (filelength) visszatér eredményeként típusú hosszú, és a maximális pozitív értéket az ilyen típusú Turbo C 2.0 egyenlő 0x7FFFFFFF (2147483647), azaz 2 GB # 150; 1. Ezenkívül a hosszú érték megköveteli a fseek funkciót, amelyet a programban használunk a feldolgozott fájlban a kívánt pozíció eléréséhez, mint bemeneti paraméter.

Kapcsolódó cikkek