Reméljük, hogy segítettünk megoldani a CF fájllal kapcsolatos problémáját. Ha nem tudja, hogy a listánkról honnan tölthet le egy alkalmazást, kattintson a linkre (ez a program neve) - Részletesebb információt talál arról, honnan töltheti le a szükséges alkalmazás biztonságos telepítésű verzióját.
Ha ellátogat erre az oldalra, akkor konkrétan ezekre vagy hasonló kérdésekre válaszolhat:
- Hogyan lehet megnyitni egy fájlt CF kiterjesztéssel?
- Hogyan lehet CF fájlt konvertálni másik formátumba?
- Mi a CF fájlformátum kiterjesztése?
- Milyen programok támogatják a CF fájlt?
Ha az oldalon található anyagok megtekintése után sem kapott kielégítő választ a fentebb feltett kérdésekre, ez azt jelenti, hogy a CF fájlról itt közölt információk hiányosak. Vegye fel velünk a kapcsolatot a kapcsolatfelvételi űrlap segítségével, és írja meg, milyen információkat nem talált.
Mi okozhat még problémákat?
Több oka is lehet annak, hogy miért nem tudja megnyitni a CF fájlt (nem csak a megfelelő alkalmazás hiánya).
Először- előfordulhat, hogy a CF fájl helytelenül kapcsolódik (nem kompatibilis) az azt támogató telepített alkalmazással. Ebben az esetben ezt a kapcsolatot magának kell megváltoztatnia. Ehhez kattintson a jobb gombbal a szerkeszteni kívánt CF-fájlra, majd kattintson a lehetőségre "Nyitni vele" majd válassza ki a listából a telepített programot. Ezt követően a CF fájl megnyitásával kapcsolatos problémáknak teljesen meg kell szűnniük.
Másodszor- előfordulhat, hogy a megnyitni kívánt fájl egyszerűen megsérült. Ebben az esetben az lenne a legjobb, ha keresne egy új verziót, vagy töltse le újra ugyanabból a forrásból (talán valamilyen oknál fogva az előző munkamenetben a CF fájl letöltése nem fejeződött be, és nem lehetett megfelelően megnyitni) .
Akarsz segíteni?
Ha további információi vannak a CF fájlkiterjesztésről, hálásak vagyunk, ha megosztja azokat webhelyünk felhasználóival. Használja az alábbi űrlapot, és küldje el nekünk adatait a CF fájlról.
Ebben a cikkben megtanítom, hogyan hozhat létre 1C konfigurációs cf fájlt. Mi ez a fájl, és milyen célokra van szükség rá? Válaszoljunk az első kérdésre: az 1C konfiguráció ebben a fájlban van elmentve. Milyen célokra használják leggyakrabban? Az elmentett konfiguráció betöltése egy üres adatbázisba. De van még egy, nevezzük „nem szabványos alkalmazásnak”.
A cf fájl segítségével frissítheti az 1C konfigurációt. Ezzel a fájllal egyszerre több kiadást is átugorhat, ahelyett, hogy egyenként frissítené őket cfu-fájlokkal. Olvasson többet az 1C konfiguráció lépésről lépésre történő frissítéséről a cikkemben:
Ebben a cikkben megtudjuk, hogyan hozhat létre cf fájlt. Ehhez be kell jelentkezni.
Kérjük, vegye figyelembe, hogy annak a felhasználónak, akivel bejelentkezik az 1C adatbázis-konfigurátorba, rendelkeznie kell a konfigurátorral való együttműködés jogával.
Egy cf fájl létrehozásához meg kell nyitnia a konfigurációt, ha az be van zárva. Nagyon gyakran zárva lehet. A megnyitáshoz kattintson a – konfiguráció megnyitása gombra.
Megnyílt a konfiguráció, bal oldalon a metaadatok listája látható.
Ha a konfigurátorhoz ment, és a bal oldalon a metaadatok listáját látta, ez azt jelenti, hogy a konfiguráció már meg van nyitva, és nem kell megnyitnia. Amikor nyitva van, általában a „Konfiguráció bezárása” gomb aktív
Ha ez a gomb aktív, de nincs metaadatok listája, az azt jelenti, hogy egyszerűen nem jelenik meg.
Lépjen a konfigurációs menübe, amelyben kiválasztja a „Konfiguráció mentése fájlba” elemet.
Kiválasztjuk a könyvtárat, ahová menteni fogjuk, írjuk a fájl nevét. Általában konfigurációnévvel és kiadási számmal írok.
Minden fájl mentésre kerül.
Most a segítségével frissítheti a hasonló konfigurációkat.
A cf fájl létrehozásának folyamatát élőben nézheti meg az alábbi videóban:
Az 1C konfiguráció frissítése cf fájl segítségével, olvassa el a következő cikkemet:
Tanuld meg a konfigurálás alapjait 1C-ben, és tanulj meg programozni az „1C: Enterprise”-ban a könyveim segítségével: és „A fejlesztés alapjai 1C: Taxiban”
Tanuljon programozni 1C-ben a „Programozás 1C-ben 11 lépésben” című könyvemben.
- A könyv világos és egyszerű nyelven íródott - kezdőknek.
- Tanuld meg megérteni az 1C architektúrát;
- Elkezdi írni a kódot 1C nyelven;
- Alapvető programozási technikák elsajátítása;
- Rögzítse tudását problémakönyv segítségével;
Kiváló útmutató a menedzselt 1C alkalmazások fejlesztéséhez, kezdő fejlesztőknek és tapasztalt programozóknak egyaránt.
- Nagyon hozzáférhető és érthető prezentációs nyelv
- A könyvet e-mailben küldjük el PDF formátumban. Bármilyen eszközön kinyitható!
- Ismerje meg a felügyelt 1C alkalmazás ideológiáját
- Ismerje meg, hogyan fejleszthet felügyelt alkalmazást;
- Ismerje meg a kezelt 1C űrlapok fejlesztését;
- Képes lesz dolgozni a kezelt űrlapok alapvető és szükséges elemeivel
- A felügyelt alkalmazás alatti programozás egyértelművé válik
Promóciós kód 15% kedvezményért - 48PVXHeYu
Ha ez a lecke segített valamilyen probléma megoldásában, tetszett vagy hasznosnak találta, akkor tetszőleges összeggel támogathatja projektemet:
Fizethet kézzel:
Yandex.Money - 410012882996301
Web Money - R955262494655
Csatlakozz a csoportjaimhoz.
Az előző leckékben említettük, hogy a konfiguráció importálható egy .CF kiterjesztésű fájlból. Például egy barátságos cég adhat Önnek egy ilyen fájlt, hogy telepítse a konfiguráció legújabb verzióját, és kísérletezzen vele. Az események ilyen fejlődése során a következőképpen kell eljárnia.
Először a már ismert ablakban, amely a program elindítása után megjelenik, kattintson a gombra Hozzáadás.
A következő ablakban válassza ki Új információs bázis létrehozása.
A következő ablakban ki kell választani az Infobázis létrehozása konfiguráció nélkül elemet új konfiguráció fejlesztéséhez vagy egy korábban ki nem töltött információs bázis betöltéséhez.
A következő ablakban adja meg az adatbázis nevét.
A listában felsorolt műveletek elvégzése után információs bázisok egy új üres adatbázis jelenik meg. Most ki kell választania, és kattintson a Konfigurátor gombra. Megnyílik a konfigurátor ablak.
Amikor először nyitja meg az ablakot, az üres, és most végre kell hajtanunk néhány lépést, hogy betöltsük a CF fájlt az üres konfigurációba.
Menüparancs végrehajtása Konfiguráció > Konfiguráció megnyitása. A program ablaka megváltozik - a konfigurációs fa megnyílik a bal oldalán. Ez még nem érdekel minket. Most már futtathatja a parancsot Konfiguráció > Konfiguráció betöltése fájlból. Ez a parancs lehetővé teszi a meglévő (esetünkben üres) konfiguráció teljes lecserélését a CF fájlba mentett konfigurációval. A megjelenő ablakban meg kell adni annak a fájlnak az elérési útját, amelyben a betölteni kívánt konfiguráció tárolva van.
Most már csak egy gombot kell megnyomnia Nyisd kiés várja meg, amíg a program betölti a konfigurációt. Ez elég sokáig tarthat. Ha a rendszer kérdéseket tesz fel Önnek (különösen az adatbázis-konfiguráció frissítésével, a konfigurációs információk szerkezetében bekövetkezett változások elfogadásával kapcsolatban), válaszoljon rájuk igennel.
A programablak bal alsó sarkában a konfiguráció frissítésének folyamatáról szóló szervizüzenetek jelennek meg. A frissítés befejezése után (az adatbázis betöltésére vonatkozó szolgáltatási üzenetek leállnak), bezárhatja a konfiguráló ablakot, és elindíthatja a program futtatását felhasználói módban. A gyakorlatban azonban a telepítés információs bázis a fenti módszerek egyikének használata általában nem korlátozza a konfiguráció első futtatása előtt elvégzendő feladatokat. Különösen nem szabad megfeledkeznünk a frissítésekről.
*.vö- a fájl csak a konfigurációt (kódot és szerkezetet) tartalmazza felhasználói adatok nélkül. Létrehozva az 1C 8.x konfigurátorból: "Konfiguráció -> Konfiguráció mentése fájlba" vagy "Konfiguráció -> Kézbesítési konfiguráció -> Kézbesítési fájl létrehozása és konfiguráció frissítése -> "Kézbesítési fájl létrehozása" attribútum.
*.cfu- a fájl csak konfigurációs frissítést tartalmaz. Például fájl 1cv8.cfu. Ebből a fájlból nem lehet konfigurációt létrehozni, mivel csak az új és az előző konfiguráció közötti eltéréseket tartalmazza. Létrehozva az 1C 8.x konfigurátorból: „Konfiguráció -> Konfiguráció kézbesítése -> Kézbesítési fájl és konfigurációs frissítés létrehozása -> Jelölje: „Konfigurációs frissítési fájl létrehozása””.
*.dt- a fájl tartalmazza a konfigurációt a felhasználói adatbázissal együtt. Ez egy speciális 1C 8 archív formátum, amely az 1C 8.x konfigurátorból jön létre: „Adminisztráció -> Feltöltés infobázis”.
*.epf (*.erf) – külső feldolgozó (jelentés) fájl. A konfigurációból származó bármely feldolgozás (jelentés) külsőleg menthető. Az 1C 8.x konfigurátorból készült: „Konfiguráció -> Konfiguráció megnyitása -> menjen a kívánt feldolgozásra (jelentés) -> válassza ki a jobb egérgombbal -> Mentés külső feldolgozásként, jelentés...”.
*.1cd– teljes értékű adatbázisfájl. Alapértelmezett névábrázolás: 1Cv8.1CD. Tartalmazza a konfigurációt, az adatbázist, a felhasználói beállításokat. Az 1C 8.x platformmal nyílik meg. Úgy jön létre, hogy az „Új információs bázis létrehozása” menüpont kiválasztásakor a „Hozzáadás” gombra kattintva automatikusan új konfigurációt hozzon létre.
*.log, *.lgf, *.lgp, *.elf- naplófájlok, amelyek információkat (regiszteradatokat) gyűjtenek az 1C 8.0 8.1, 8.2, 8.3.
*. cdn - fájl ezzel a kiterjesztéssel ( 1Cv8.cdn) az 1C Enterprise adatbázis kézi vagy automatikus blokkolására szolgál nyolcadik verzió.
*.mxl- nyomtatott űrlapok fájljait használják, beleértve az 1C-t is. Mindkettő nyomtatott dokumentumok, referenciakönyvek, jelentések és különféle adattároló eszközök különféle osztályozókhoz. Megnyílik a konfigurátoron keresztül, vagy 1C:Enterprise módban a „file -> open” paranccsal. Ugyanígy jön létre: Konfigurátor módban vagy 1C:Enterprise-ben a „file -> new” segítségével. Az ilyen kiterjesztésű fájlok átviteli szabályokként is szolgálhatnak, például 1C 7.7-től 8.2-ig (acc77_82.xml és a segédfeldolgozás exp77_82.ert) - általában az ExtForms mappában találhatók.
*.efd- ez egy 1C archív fájl, amelyet a konfiguráció telepítéséhez használnak. Tartalmazza az 1C konfigurációt vagy annak frissítését. A setup.exe segédfájllal indítható el (ugyanabban a mappában kell lennie).
*.mft– segédfájl sablonból konfiguráció létrehozásához. Konfigurációs információkat, leírást, elérési utat, nevet tartalmaz. Közvetlenül maga a platform használja, amikor egy sablonból 1C információs bázist hoz létre.
*.grs- grafikus diagramok fájljai speciális 1C formátumban. Megnyílik a konfigurátoron keresztül, vagy 1C:Enterprise módban a „file -> open” paranccsal. Ugyanígy jön létre: Konfigurátor módban vagy 1C:Enterprise-ben a „file -> new” segítségével.
*.geo- földrajzi diagramok fájljai speciális 1C formátumban. Megnyílik a konfigurátoron keresztül, vagy 1C:Enterprise módban a „file -> open” paranccsal. Ugyanígy jön létre: Konfigurátor módban vagy 1C:Enterprise-ben a „file -> new” segítségével.
*.utca- szövegsablon fájlok. Főleg 1C fejlesztők használják.
*.pff- egy fájl mentett teljesítménymérésekkel. Rendszergazdák és 1C szakemberek használják.
A konfigurációs fájl (*.cf) belső szerkezete nem titok. Jó emberek régen szétszedték, és sok érdekes segédprogramot hoztak létre, amelyek lehetővé teszik, hogy ezzel a formátummal dolgozzon. Az Infostarton jó tucat (ha nem több) érdekes publikáció található, amelyek így vagy úgy olvassák a *.cf fájlok tartalmát, tehát ez a téma egyáltalán nem újdonság.
Sajnos azonban ehhez a formátumhoz nagyon kevés jó, jó minőségű dokumentáció létezik. A cikk megírására kedves barátom inspirált, aki részletesen leírta az 1C:Enterprise fájl információbiztonsági formátum (*.1CD) felépítését.
Úgy tűnik számomra, hogy ez a cikk katalizátora lett számos más szerzők által létrehozott fejlesztésnek. Az információk nyitottsága és hozzáférhetősége ösztönözte a szerzők kreatív tevékenységét, és az egész közösség számos kiváló eszközt kapott az 1C fájladatbázisokkal való munkához.
Számomra úgy tűnik, hogy a CF formátum részletes leírása sok szerzőt is érdekelni fog, és talán lehetőségünk lesz sok új érdekes fejleményt látni a konfigurációs fájlok témakörében.
Háttér
Mint fentebb említettük, a formátum szerkezete régóta ismert, és a felépítéséről az interneten található információ (bár meglehetősen szűkös). Szükségem volt erre az információra A program kidolgozásakor, amelyen dolgoztam, a következő anyagokra támaszkodtam:
- , szerző
- http://www.richmedia.us/post/2011/01/18/cf-file-format-1c-8-compatible.aspx, ha nem tévedek, a szerző
- , szerző
Terminológia
Térjünk közvetlenül a beszélgetésünk témájára.
Az i-ek pontozásához döntsük el magának a formátumnak a nevét.
Először is, nem csak konfigurációs fájlok jönnek létre ebben a formátumban, hanem külső jelentési és feldolgozási fájlok is. Az interneten a Compound fájl névre bukkantam. Talán jól bevált az 1C oldtimerek között, de nem igazán szeretem.
E cikk keretein belül azt javaslom, hogy ezt a formátumot nevezzük „ tartály" Ha a tisztelt közönség javasolja a helyes nevet a megjegyzésekben, nagyon örülök.
Nézzünk befelé
Az adattárolás logikai egysége belül tartály van dokumentum . A dokumentum egy értelmes, teljes adathalmaz, amely valamilyen módon olvasható és értelmezhető. Nem használom kifejezetten ezt a kifejezést fájlt", mert ezt a nevet lefoglalom egy másik entitásnak, amelyről kicsit később.
Tehát általánosságban véve a CF (EPF/ERF) fájl az tartály , amelyben tárolják dokumentáció .
A tárolóban lévő minden dokumentum felosztható blokkok . Az adattárolás minimális fizikai egysége a Blokk, de értelmes logikai egység az dokumentum. Más szavakkal, a tárolóban lévő dokumentumok szétszórt darabok formájában heverhetnek ( blokkok) és a dokumentum tartalmának elolvasásához annak minden részét össze kell gyűjteni és kombinálni.
A konténer szerkezete
A tartály a következő részeket tartalmazza (sorrendben):
- Tárolófejléc
- Az első üres blokk címe, amelybe adatot lehet hozzáadni
- Alapértelmezett blokkméret
- A tárolóban lévő fájlok száma
- A tartály tartalmát tartalmazó dokumentum
- A tartalomjegyzékben felsorolt tényleges adatok
A tartály tartalmának elolvasásához el kell olvasnia a tartalomjegyzéket. Mivel azonban dokumentum tartalmazza blokkok, akkor először meg kell tanulnia, hogyan állíthat össze egy teljes dokumentumot ugyanezekből a blokkokból.
Blokk szerkezet
A blokk fejlécből és törzsből áll. A fejléc jelzi a teljes dokumentum teljes méretét, az aktuális blokk méretét és a következő blokk címét (pozícióját a fájlban). Közvetlenül a fejléc után jön a blokk törzse - valójában az adatok, amelyekre szükségünk van. A blokk törzse pontosan a fejlécben megadott hosszúságú (byte-ban).
A tartály belsejében itt-ott van egy mágikus állandó, amely egy bizonyos „ürességet” jelöl - ez a 0x7fffffff szám.
Amikor blokkokból összeállítunk egy dokumentumot, a fejlécben megnézzük a következő blokk címét. Ha egyenlő a 0x7ffffffff-vel, akkor nincs „következő” blokk, ez az utolsó.
A 0x7ffffffff konstans az INT_MAX értéke, azaz. egy 4 bájtos előjelű egész szám maximális értéke.
Logikai "fájlok"
Említettem, hogy a " fájlt– Megőrzöm a jobb időkre. Eljöttek azok az idők :)
A teljes konfiguráció egy tárolóban van tárolva az űrlapon fájlokat. Ha emlékszünk az iskolai informatika kurzusra, akkor emlékezni fogunk arra, hogy a „fájl”, azt mondták, egy név dokumentum.
A fájl abban különbözik a „dokumentumtól”, hogy van neve, és ezen a néven lehet rá hivatkozni. Ha a konfiguráció tartalmát elemezzük és metaadatfát építünk, akkor a fájlok belsejében sok hivatkozást találunk más fájlokra. A konfigurációs beolvasási eljárás neveken működik fájlokatés név szerint hivatkozik rájuk.
Összefoglalva a következőket mondhatjuk: a konténer különböző dokumentáció, de néhányuknak van neve is. Az ilyen dokumentumokat " fájlokat„És nem szolgáltató jellegűek, hanem közvetlenül alkalmazott jellegűek. Pontosan fájlokat konfigurációs metaadatok tárolására.
Fájl komponensek
Minden fájl kettőből áll dokumentumokat:
- A fájlnevet és a létrehozási/módosítási dátumokat tartalmazó dokumentumot tulajdonítja
- A tartalomdokumentum, amely a fájl tényleges törzsét tartalmazza
Most, hogy az összes összetevőt bejelentették, hátra van a tároló talán legfontosabb dokumentuma - a tartalomjegyzék dokumentum, amely az összes tárolófájl helyét jelzi. Mint fentebb említettük, a tartalomjegyzék dokumentum a tároló legelső dokumentuma, és közvetlenül a tároló címe után következik.
- Az attribútum dokumentum címe (fájleltolása).
- A tartalomdokumentum címe (fájleltolása).
- 0x7fffffff szám (rekord vége).
Hadd emlékeztesselek arra, hogy minden dokumentum blokkra osztható (töredezett). A dokumentum blokkokból történő összeállításának algoritmusát az alábbiakban tárgyaljuk.
A tartalomjegyzék bejegyzése egy 2-es számjegyű INT32. Az első szám a fájlattribútumok dokumentumának címe. Ez a cím az attribútumok dokumentum 1. blokkjának elejére visz minket. Az attribútumok dokumentumból megtudhatjuk a fájl nevét. A második szám a fájl tartalmának dokumentumcíme. Ezen a címen kerülünk a tartalomdokumentum 1. blokkjának elejére, ahonnan közvetlenül beolvassuk a fájl adatait.
Az adattömörítés jellemzői.
Egy konténer sokféle fájlt tartalmazhat. Ezek általában UTF-8 kódolású szövegfájlok. A tárolófájlok között azonban lehetnek más tárolófájlok is. A legegyszerűbb analógia a fájlrendszerrel van. A tároló egy könyvtár, és a tárolóban lévő fájlok a tartalma. Egy könyvtár más könyvtárakat is tartalmazhat.
Ennek a "fájlrendszernek" a gyökérkönyvtára maga a *.CF fájl. Benne lehetnek más konténerfájlok, lényegében egymásba ágyazott könyvtárak, amelyek olvasása pontosan ugyanazzal az algoritmussal történik, és pontosan ugyanolyan szerkezetűek.
Van azonban egy sajátossága a gyökérkönyvtárnak. Minden tartalmi dokumentumok a gyökérkönyvtárban lévő fájlok tömörítése a Deflate algoritmussal történik. A beágyazott könyvtárakban lévő fájlok tartalma többé nincs tömörítve. Egyszerűen fogalmazva, egy konténerfájl legfelső szintjén az összes fájl törzse tömörítésre kerül, de ha a tárolóban lévő fájl maga is konténer, akkor a benne lévő fájlok már tiszta formában (tömörítés nélkül) lesznek kiírva.
Szabad blokkok lánca
Bármilyen adat eltávolítása egy tárolóból üres helyeket eredményezhet. Ezek a szabad helyek láncba kapcsolódnak, és egyfajta „dokumentumot” alkotnak, melynek adatai hiányoznak. Más szóval, a szabad blokkok ugyanazon elv szerint kapcsolódnak egymáshoz, mint ahogy a dokumentumblokkok is kapcsolódnak egymáshoz. Az első szabad blokk címe a konténer fejlécének legelején látható. Ha egy szabad blokk címe INT_MAX, akkor ez azt jelenti, hogy a tároló közepén nincsenek szabad (üres) blokkok.
Az elméleti rész rövid összefoglalása
- A CF(EPF/ERF) fájl „container” formátumban van írva
- A tároló fejléccel kezdődik
- A tároló minden tartalma, a fejléc kivételével, „dokumentumként” van írva.
- A dokumentum blokkokra osztható
- A dokumentum blokkcímmel kezdődik, amely megmondja, hogyan kell elolvasni a teljes dokumentumot
- Közvetlenül a tároló címe után egy tartalomjegyzék található.
- A tartalomjegyzék olyan bejegyzések gyűjteménye, amelyek a " fájlokat» a tartály belsejében
- Minden fájl két dokumentumból áll – egy attribútum-dokumentumból, ahol a fájl neve szerepel, és egy tartalomdokumentumból, ahol a fájladatok ténylegesen találhatók.
- Minden tartalomjegyzék bejegyzés 2 címet tartalmaz. Az első a fájlattribútumok dokumentumának címe, a második a tartalomdokumentum címe.
- Egy tároló tartalmazhat beágyazott tárolókat (például beágyazott mappákat)
- A gyökértárolóban lévő fájlok tömörítése Deflate algoritmussal történik, a beágyazott tárolókban lévő fájlok tömörítés nélkül íródnak.
Érezzük már a bájtokat
Tehát itt az ideje átgondolni, hogy a fent említett összes entitás pontosan hogyan épül fel.
A konténerből az adatok kiolvasásának fő módja a bizonyos dokumentumokat alkotó blokkok láncának beolvasása. Úgy tűnik, a megfelelő kiindulópont a blokkdokumentumok olvasásának elve.
Dokumentum olvasása blokkokban
A tárolóban lévő minden dokumentumnak blokkfejléccel kell kezdődnie. Ebben az esetben a dokumentum több blokkra osztható. Egy dokumentum olvasásához blokkokból kell „összeszerelni”.
Tehát a blokk fejléce egy 31 bájt hosszúságú karakterlánc. Ez a sor így néz ki:
[A teljes dokumentum mérete][Szóköz][Az aktuális blokk mérete][Szóköz][A következő blokk címe][Szóköz] , ahol:
- CRLF – szabványos Windows soremelés, karakterpár \r\n (0x0D,0x0A)
- Teljes dokumentumméret – a dokumentum teljes hossza bájtban. Egy hexadecimális szám karakterlánc reprezentációjaként írva. Hossz - 8 bájt.
- Tér – tér. Szimbólum 0x20
- Az aktuális blokk mérete a blokk törzsének hossza bájtban. Ez egy INT32 szám karakterlánc-reprezentációjaként is meg van írva hexadecimális formátumban. Ha a dokumentum egyetlen blokkból áll, akkor a teljes dokumentum mérete vagy kisebb, vagy megegyezik az aktuális blokk méretével (ami logikus)
- Következő blokk címe - az a cím, amelyen a dokumentum következő blokkja található. Ha a következő blokk címe INT_MAX, akkor ez azt jelenti, hogy nincs következő blokk. A következő blokk címe is egy szám karakterlánc-reprezentációjaként kerül kiírásra.
Közvetlenül a blokk fejléce után következik a blokk törzse, amelynek hossza a „Jelenlegi blokkméret” mezőben megadott.
Nézzük a képet: a teljes dokumentum hossza 0x54 bájt, ezek a 0x54 bájtok piros kerettel vannak kiemelve. Ez a dokumentum adata. A blokk hossza 0x200 bájt, azaz. hosszabb, mint maga a dokumentum hossza. Emiatt a blokk többi adata a kihasználatlan terület "nulláit" jelenti. Jelentős bájtok a piros kerettel jelölt bájtok.
Ha a dokumentum hossza nagyobb, mint a blokk hossza, akkor a következő blokkot kell beolvasni. Ha a „Következő blokk címe” mezőbe 0x7fffffff-től eltérő érték van írva, akkor be kell olvasnia az aktuális blokkot, majd erre a címre kell mennie, és be kell olvasnia egy másik blokkot. Ha ez a blokk tartalmazza a következő blokk címét is, akkor oda is el kell menni. Így a dokumentumot alkotó blokkok „lánca” jön létre.
Az olvasást addig kell folytatni, amíg a 0x7fffffff értéket meg nem találja a „Következő blokk címe” mezőben, vagy amíg a „Teljes dokumentum mérete” mezőben megadott számú bájt beolvasásra nem kerül.
A „Teljes dokumentumméret” mezőnek csak az első blokknál van jelentősége. A dokumentum minden további blokkjában 0x00000000 értéke van.
Tárolófejléc formátuma
A tároló fejléce 16 bájt hosszú, és a következő mezőkből áll:
Terület |
Magyarázat |
|
Az első szabad blokk címe |
INT32 (4 bájt) |
Az eltolás, amelynél a szabad blokkok lánca kezdődik |
Alapértelmezett blokkméret |
INT32 (4 bájt) |
Egy blokk bármilyen hosszúságú lehet, de az alapértelmezett például új blokkok hozzáadására használható. |
Ismeretlen célú mező (lásd a cikkhez fűzött megjegyzéseket) Gyakran egybeesik a tárolóban lévő fájlok számával |
INT32 (4 bájt) |
Egy bizonyos értéket tükröző szám, amely általában egybeesik a tárolóban lévő fájlok számával, azonban a kommentekben szereplő kollégák úgy vélik, hogy ez nem teljesen igaz. Ez a szám semmilyen módon nem befolyásolja a tároló értelmezési algoritmust, figyelmen kívül hagyható. |
Fenntartott mező |
INT32 (4 bájt) |
Mindig egyenlő 0-val (mindig?) |
Tartalomjegyzék Dokumentum rögzítési formátum
Fájl attribútumok Dokumentumformátum
Az attribútumok dokumentuma leírja a fájl nevét és a létrehozás/módosítás dátumait.
Terület |
Magyarázat |
|
A fájl létrehozásának ideje |
UINT64 (8 bájt) |
Fájl létrehozási ideje, 100 mikroszekundumos időközökben kifejezve korszakunk kezdete óta (01/01/0001 00:00:00) |
Fájl módosítási idő |
UINT64 (8 bájt) |
Hasonlóképpen |
Fenntartott mező |
INT32 (4 bájt) |
Mindig 0. Lehet, hogy ezek attribútumjelzők, például csak olvasható, rejtett stb. Nem találkoztam azonban olyan fájlokkal, ahol ez a mező eltérne a nullától. |
Fájl név |
Karakterlánc UTF-16 formátumban |
A dokumentum teljes fennmaradó törzsét elfoglalja (mínusz 2 dátum és egy tartalék mező) |
A konténerleolvasás elve
- Állítson össze egy tartalomjegyzék dokumentumot blokkokból, és olvassa el
- Menjen végig a tartalomjegyzék dokumentumban lévő összes bejegyzésen, és olvassa el a tárolófájlok dokumentumattribútumait (neveit).
- Minden beérkezett név hozzárendelése a tartalomdokumentum címéhez
- A kimenet a „Fájlnév” -> „Tartalom címe” megfeleltetés.
Fájlok olvasása
- Fájlnév alapján szerezze be a tartalomdokumentum címét a tartalomjegyzékből
- Tartalomdokumentum összeállítása blokkokból
- Ha ez a gyökértároló, akkor csomagolja ki a tartalmi dokumentumot (tömörítve van)
- Kész. Az eredmény a keresett fájl adatai.
Frissítés 2014.02.25-től
Végül
Ez a cikk nem a végső igazság, valószínűleg még hibák is vannak benne. Ha azonban ez a téma érdekes az Ön számára, akkor remélem, hogy ez a cikk segít a projektek megvalósításában. Sok szerencsét!