Blog gunsmoker serialization - általános információk a fájlokról
A külső eszközökön (lemezeken) tárolt fájlokat gyakran fizikai fájloknak nevezik. Az operációs rendszer fájlok elnevezési szabályai szerint összeállított nevek. Például a Windows esetében ez a következő:
Fájlok elnevezése
Minden fájlrendszer ugyanolyan általános rendszer elnevezésének egyes fájlok: base fájl nevét (myFile), valamint további fájl kiterjesztését (txt), ponttal elválasztva. Az alap fájlnevet és a fájlkiterjesztést a fájlnévnek nevezik. (Átnevezni). Azonban minden fájlrendszer (mint az NTFS, CDFS, exFAT, UDF, FAT és FAT32) lehet egyedi és eltérő szabályok kialakulásának egyes komponensek az utat a könyvtárat vagy fájlt. Felhívjuk figyelmét, hogy a könyvtár (más néven könyvtár), amelynek célja a fájlok kezelésére kategória, - ez egyszerűen egy fájl egy speciális tulajdonsága, hogy a védjegyek őt, mint egy könyvtár, hanem a többi könyvtárak követni mindegy elnevezési szabályok rendes fájlokat. Mivel a „könyvtár” egyszerűen egy speciális típusú fájlt, néhány referencia anyagok használatával az általános kifejezés a „fájl” fedezi egyrészt a katalógusban fogalmak és a koncepció az adatállomány, mint olyat. Emiatt, hacsak másként nem jelezzük, a könyvtárakra bármilyen név és használati szabály vagy példa is alkalmazható. A könyvtárat nem szabad összetéveszteni a mappával. A mappa általánosabb fogalom. Directory mindig fizikailag képviseli a lemezen, valamint a mappa lehet egy könyvtár, és képviseli a virtuális (logikai) helyen - például a mappát „Hálózati helyek” vagy a „Sajátgép”. A lemez legfelső szintű könyvtárát gyökérkönyvtárnak hívják. A gyökérkönyvtár mindig egyedi, de minden lemeznek megvannak a maga.
Minden könyvtárban, kivéve a gyökérkönyvtárat, léteznek pszeudo-könyvtárak, amelyek speciális rezervált nevekkel rendelkeznek. (pont) és. (két pont). Könyvtárba. Ugyanaz a könyvtár is utal. - az előzőhöz (szülőkönyvtár, felső szintű könyvtár).
Az „út” kifejezés egy vagy több könyvtárak (vagy mappák) jellel választjuk el (\ - backslash, fordított perjel, backslash), és esetleg a neve a mennyiség (C :), vagy a kiszolgáló nevét (\\ kiszolgáló \\? \ UNC \ kiszolgáló vagy \\? \ C :). Megjegyzés: a Windows néhány távol-keleti verziójában egy másik karaktert használnak az útlezáróhoz. de meg kell értenünk, hogy pontosan ugyanaz a szimbólum (azonos ANSI-kóddal), csak másnak tűnik.
Összességében a Windows háromféle útvonalat használ:- LFS (Local File System) - a helyi fájlrendszer nevét, például: C: \ MyFolder \ MyFile.txt
- UNC (Uniform Naming Convention) - hálózati UNC nevek, például: \\ server \ MyFolder \ MyFile.txt
- Hosszú UNC vagy UNCW - hosszú fájlneveket, például: \\ \ UNC \ server \ MyFolder \ átnevezni vagy \\ \ C: \ MyFolder \ átnevezni ??
A lemezen lévő egyik könyvtár aktív a futó program számára. Ez az aktuális könyvtár. Az aktuális könyvtár mindig egy, a program indításakor beállított, és működés közben megváltoztatható (a könyvtárváltási függvény hívásával). Az aktuális könyvtár aktív, működőképes - a nevek feloldásakor használható (lásd alább). Az aktuális programkönyvtár mellett a rendszer külön figyeli az egyes lemezek aktuális könyvtárát. Az aktuális könyvtárban megadott meghajtót az aktuális lemeznek nevezik.
Path, hogy kezdődik a neve a mennyiség (C: \ MyFolder \ átnevezni), a kiszolgáló nevét (\\ server \ MyFolder \ átnevezni) vagy a gyökér könyvtárban (\ MyFolder \ átnevezni) nevezzük abszolút -, mert ez a név mindig egyedi ugyanazt a fájlt jelöli, függetlenül a külső környezettől. Egyébként az út az úgynevezett relatív (mint átnevezni. \ Átnevezni. \ MyFolder \ átnevezni vagy. \ .. \ MyFolder \ átnevezni). A relatív útvonalakat az aktuális könyvtártól függően kezelik. Ezért ugyanaz a relatív útvonal hivatkozhat különböző fájlokra. . Például, az elérési utat és átnevezni \ átnevezni lásd a C: \ MyFolder \ átnevezni. ha az aktuális könyvtárban (vagy a könyvtárban, ahonnan jön a névfeloldás) a C: \ MyFolder \. de ugyanazok a nevek utalnak a D: \ Program Files \ MyFolder \ MyFile.txt fájlra. ha az aktuális könyvtár D: \ Program Files \ MyFolder \. Ne tévessze össze a teljes fájlnevet abszolút értékkel. Ezek kissé eltérő fogalmak, bár gyakran szinonimaként tekintik őket. A teljes fájlnév a fájl neve az elérési úttal, az a név, amellyel a fájl megtalálható. De nem feltétlenül abszolút. Másrészt minden abszolút név mindig teljes név. Az angol, a „teljesen minősített elérési út” ( „teljesen megadott útvonal”) - szinonim az abszolút elérési utat.
A karakterek számának korlátozása is eltérő lehet, és attól függően változhat, hogy a fájlrendszer és a fájl neve van-e. Ezt tovább bonyolítja a visszafelé kompatibilitás. Például a régi MS-DOS fájlrendszerek legfeljebb 8 karaktert támogatnak az alapfájl nevéhez és a bővítés 3 szimbólumához - összesen 12 karaktert, beleértve a szeparációs pontot is. Emellett ezek a nevek nem tartalmazhat sok szimbólumot - például egy szóközt. Ez a fájlnév formátuma általában "8.3 fájlformátumnak" vagy rövid fájlnévnek nevezik. A Windows fájlrendszerek nem rendelkeznek ilyen korlátozással, és bár támogatják a 8.3 formátumú neveket a hátrafelhasználók kompatibilitásához, többnyire hosszú fájlnevekkel dolgoznak.
Nevezési egyezmények
A következő alapszabályok lehetővé teszik az alkalmazások számára, hogy a fájloktól és könyvtáraktól függetlenül létrehozzák és feldolgozzák az érvényes neveket:- Egy pont használatával elválaszthatja az alapfájl nevét a kiterjesztésből a fájlban vagy a könyvtárban. A könyvtárak kiterjesztéssel rendelkezhetnek, bár általában nem használják.
- Használja a hátsó sávot (\) az útösszetevők elválasztásához. A visszalövés elválasztja a fájlnevet az elérési utatól, és egy könyvtár nevét az út másik könyvtárából. A rejtjelzőt nem használhatja a valódi fájl vagy könyvtár nevének részeként, mivel ez egy fenntartott karakter, amely a teljes fájlnevet részekre osztja.
- A kötetnév részeként használhatja a kötetszámot, például a C: \ -ban C: \ elérési \ fájlban vagy a \\ szerver \ megosztásban a \\ kiszolgáló \ megosztás \ elérési \ fájlban.
- A fájlnevek érzékenyek a kis- és nagybetűkre. Például az OSCAR nevek. Oscar és Oscar mind ugyanazon fájlra utalnak. Megjegyzés: A POSIX szabványnak megfelelő kompatibilitással engedélyezheti a fájlérzékelés esetén a fájlok esetében a címérzékenységet, de ez nem szabványos viselkedés, és általános forgatókönyvekben nem ajánlott.
- A kötetnevek (meghajtóbetűjelek) szintén nem érzékenyek a kis- és nagybetűkre Például: D: és d: ugyanazt a kötetet jelenti.
- A fájlnév bármelyik karakterét használhatja, beleértve a Unicode karaktereket is, az alábbi speciális karakterek kivételével:
- <(меньше)
- > (több)
- : (vastagbél)
- "(kettős idézetek)
- / (perjel, perjel)
- \ (backslash, backslash)
- | | (függőleges vonal, cső)
- ? (kérdőjel)
- * (csillag)
- Zéró (NUL karakter)
- Olyan szimbólumok, amelyek kódja 1 és 31 között van (kivéve az alternatív adatfolyamokat, ahol ezek a karakterek megengedettek)
- Minden olyan karakter, amely nem támogatja az alapjául szolgáló fájlrendszert
- Használja például a pontot mint pályaösszetevőt, például az aktuális könyvtárat. \ Temp.txt.
- Használjon két egymást követő pontot (.). \ Temp.txt.
- A fájlnevekhez ne használja a következő, fenntartott eszközneveket: CON, PRN, AUX, NUL, COM1, COM2, COM3, COM4, # 8203; # 8203; COM5, COM6, COM7, COM8, COM9, LPT1, LPT2 LPT3, LPT4, LPT5, LPT6, LPT7, LPT8 és LPT9. Emelje ki ezeket a neveket az alapvető fájlnevekben is - például a NUL.txt fájlban.
- Ne felejtse el a fájlt vagy a könyvtár nevét egy periódussal. Bár az alapjául szolgáló fájlrendszer támogatja ezeket a neveket, a Windows shell, a felhasználói felület és az alkalmazások - nem. Lehetőség van például a fájlnév első karakterének meghatározására. temp.
Az útvonal a megadott fájlt, amely egy vagy több komponens elválasztva egy speciális szimbólum (backslash), minden egyes komponens általában egy könyvtárban a fájlnév, de vannak bizonyos eltérések az alábbiakban tárgyaljuk. Nagyon gyakran a rendszerben a pálya értelmezésének döntő fontossága van az út kezdetének - az úgynevezett útvonal előtagnak. Ez az előtag határozza meg az ezen az útvonalon használható névteret, továbbá milyen speciális karaktereket használhat az útvonalon - beleértve az utolsó karaktert is.
Ha az elérési út összetevője egy fájlnév, akkor az utóbbi az utóbbi összetevőnek kell lennie.
Mindegyik elérési összetevőnek a név maximális hossza is van, az adott fájlrendszertől függően. Leggyakrabban ezek a korlátozások két fő csoportra korlátozódnak: rövid és hosszú fájlnevek. Vegye figyelembe, hogy a fájlnevek a fájlrendszerben speciális fájltípusként vannak tárolva, így a fájlnevezési szabályok a könyvtárnevekre is vonatkoznak. Összefoglalva: az elérési út egyszerűen a hierarchia sztring ábrázolása az adott fájlhoz vagy könyvtárhoz tartozó összes könyvtár között.
Abszolút és relatív utak
A fájlokkal működő függvények esetében a fájlnév az aktuális könyvtárhoz (vagy más, kifejezetten megadott könyvtárhoz) képest vagy teljes egészében megadható. Az aktuális könyvtárhoz tartozó fájlnév, ha nem az alábbiak egyikével kezdődik:- Minden formátum UNC-neve, amely mindig két hátsó sávval kezdődik (\\).
- A meghajtó megnevezése egy visszalépéssel, például: C: \ vagy D: \.
- A gyökérkönyvtárat - például a \ mappát vagy a \ file.txt - egy ellentétes sávot.
- C: A tmp.txt a C. meghajtó aktuális könyvtárában található tmp.txt nevű fájlra utal.
- C: A Temp \ tmp.txt a C meghajtó aktuális könyvtárának Temp almappájában található tmp.txt fájlra utal.
- . A \ tmp.txt egy tmp.txt nevű fájlra mutat. amely az aktuális könyvtár szülőkönyvtárában található.
- . A \ .. \ tmp.txt olyan fájlra mutat, amely két könyvtárat tartalmaz az aktuális könyvtár fölött.
- . A \ Temp \ tmp.txt egy tmp.txt nevű fájlra mutat. a Temp könyvtárban található. amely viszont az aktuális könyvtár szülőkönyvtárában található.
- A C. \ Temp \ tmp.txt egy tmp.txt nevű fájlra mutat. a Temp könyvtárban található. amely viszont a C. meghajtó aktuális könyvtárának szülőkönyvtárában található.
- C: \ Temp \ .. \ Temp \ tmp.txt és C :. \ Temp \ \ tmp.txt - e két pálya hivatkoznak a C: \ Temp \ tmp.txt. Bár senki nem fogja megkérdezni az utat ebben a formában, de az ilyen utakat lehet beszerezni ragasztás után a teljes útvonalát több összetevő különböző forrásokból. Bár az út az ilyen jellegű abszolút (nem rokon) abban az értelemben, az eredeti definíció, néha még mindig emlegetik relatív, kiemelve a jelenléte az alkatrész. módon.
Maximális úthosszkorlátozás
A Windows, a maximális úthossz egyenlő MAX_PATH karakter MAX_PATH amely a meghatározás szerint állandó egyenlő 260 - néhány kivételtől eltekintve az alábbiakban tárgyaljuk. Helyi útvonal áll a következő sorrendben: betűjelet, vastagbél-, vissza-per, a neve alkatrészek, szeparált hátsó osztásjelet. Például a legnagyobb utat a D meghajtón a formája D: \ valami 256 karakter irányú (és egy másik szimbólum, 260, vesz lezáró nulla).
A Windows olyan funkciókat is tartalmaz, amelyek lehetővé teszik a speciális fájlok használatát. Az ilyen útvonalak esetében a maximális névkorlátozás 32.767 karakter. Az ösvény minden összetevőjét a fájlrendszertől függő érték - általában 255 karakter - korlátozza. Hasonló utakat adnak (és értelmeznek) különös módon. Az ilyen útvonal meghatározásához a \\? \ Előtagot kell használni. például: \\? \ D: \ nagyon hosszú útvonal vagy \\? \ UNC \ szerver \ nagyon hosszú útvonal.
Ezek a nevek csak akkor használható a Windows Unicode-funkciókat. Számukra (nevek) kell óvatosan kell kezelni, két okból. Először is, a normál programok nem férhet, hogy a fájlok és könyvtárak neveit, amelyek meghaladják a tipikus határát MAX_PATH. Másodszor, UNCW nevek kerülnek átadásra szolgáló fájlrendszer „ahogy van”, anélkül, hogy a szokásos útvonalakon réteg normalizálása. Például a / nem fogok helyébe \ neveket. (Két pont). (Egy pont), nem lesz különleges, és nem bontakozik ki az igazi könyvtár nevét. Ezért lehetséges, hogy adja meg a nevét több mint 260 karakter az út (és a nevét a nevét, vagy elfogadhatatlannak tartja - például, egy ponttal a végén) - mivel a neveket át a fájlrendszer kezelés nélkül, úgy, hogy a normalizáció a réteg nem szab határt 260 karakter (és más szabályok Windows file nevek).
névterek
A névtér megismeréséhez használhatja a SysInternals WinObj segédprogramját.
Win32 névtér helyek
Ezek a nevek, amelyek a \\? \ - vel kezdődnek, már elemeztük őket.
A C: \ előtagok aliasok.
Win32 Device Name Spaces
A fizikai fájlok helyett az eszközök eléréséhez az eszköz névterét használja. Az útvonal meghatározásához az \\. \ Előtagot (két visszalövés, egy pont, egy hátsó sáv) használják. Például hozzáférhet a lemezhez fizikai eszközként, anélkül, hogy elérné a fájlrendszert. Természetesen az "eszközök" nem korlátozódnak csak a lemezekre.
Például, ha azt szeretnénk, hogy megnyitja a soros kommunikációs port számát 1, akkor a COM1 hívó nevét CreateFile funkciót. Ez azért működik, mert a COM1-COM9 része a fenntartott nevek a névtérben NT. Úgy működik, mint egy álnév a készüléket, és bár akkor egyértelműen meg kell határozni az előtag \\. \. Összehasonlításképpen: ha hirtelen van egy száz és a COM-portot és akkor olvassa el a 56-ik COM-port, akkor nem lehet megnyitni nevében a COM56 -, mert nincs előre meghatározott alias vagy hát neki. Meg kell nyitni a neve \\. \ COM56.
NT névterek
Vannak olyan API-funkciók, amelyek lehetővé teszik az NT-stílusban történő elnevezéseket, de a legtöbb esetben ez nem szükséges. A legnépszerűbb objektumoknál a hivatkozások (aliasok) úgy jönnek létre, hogy azok normál függvényekkel érhetők el. Például az NT névtér olyan dolgokat tartalmaz, mint a Serial0 és a Serial1. HarddiskVolume1 és Harddisk0. de általában a Win32 névtéren keresztül használják a C: és \\. \ PhysicalDrive0 neveket.
Amint már említettük, más névterek is megvalósulnak az NT névtér tetején. Például a rendszerleíró adatbázisban a REGISTRY elem a gyökéren kerül létrehozásra. a kernel objektumok a KernelObjects-ben vannak. a Win32 eszközökről és fájlokról már elmondtam, vannak olyan munkamenetek is, és mondjuk az IPC objektumok globális és helyi nevei, és így tovább.
Ezzel lezárjuk a fájlokról szóló történetet, és továbblépünk az adatok valóságos sorszámozására.