kategória | ||||||||||
|
||||||||||
|
||
A számítógépen lévő információtárolási egysége a fájl (file). Egy fájl tartalma a gép szempontjából vagy adat, vagy program, amely a processzor által végrehajtható utasításokat tartalmaz: néha bináris fájlnak is hívják. A fájlban tárolt adat tetszőleges, lehet szöveg, grafikus kép, hang stb. Az adatok formájára nézve nincs előírás, a gyakorlatban nagyon sokféle formátum létezik. A fájlt minden operációs rendszer használja, konkrét megjelenése azonban már az operációs rendszertől függ.
A fájlrendszer az az általános struktúra, amely alapján az operációs rendszer elnevezi, tárolja és rendszerezi a fájlokat. A Windows 2000 három fájlrendszert támogat: FAT, FAT32 és NTFS. A fájlrendszer a Windows 2000 telepítésekor, meglévő kötet formázásakor, vagy új merevlemez telepítésekor választható ki. A FAT fájlrendszer (2 GB tárolókapacitásig), és annak továbbfejlesztett verziója a FAT32, amely a 2 GB-nál nagyobb (512 MB és 2 TB közötti nagyságú) merevlemez-meghajtókhoz javasolt, a korábbi Windows verziók és a DOS által használt fájlrendszer. Ha a számítógépünkön a Windows 2000 mellett MS-DOS, Windows 3.1, Windows 95, vagy Windows 98 is telepítve van, azaz kettős betöltésű konfigurációt használunk, célszerűbb a FAT vagy a FAT32 használata. Az NTFS fájlrendszer a Windows NT, 2000 és XP operációs rendszerekhez ajánlott fájlrendszer: a FAT fájlrendszerek ilyen irányú hiányosságaival szemben alkalmas biztonsági beállítások tárolására (hozzáférés-vezérlés), tömörítésre, nagyméretű merevlemezek kezelésére (2 terabyte-ig), valamint Windows 2000-ben és XP-ben adatok titkosítására.
A Microsoft operációs rendszerekben a fájl a következő jellemzőkkel rendelkezik:
fájlnév: |
DOS: legalább 1, maximum 8 betű szóköz
nélkül |
fájlkiterjesztés: |
nem kötelező; DOS-ban maximum 3 betű. |
fájlméret: |
a fájl mérete bájtban. |
dátum: |
A fájl létrehozásának vagy utolsó módosításának dátuma. |
idő: |
A fájl létrehozásának vagy utolsó módosításának ideje. |
fájlattribútumok: |
A fájl használatára vonatkozó jelzések, amelyek a következők lehetnek: |
A (archive) |
archív fájl |
R (read only) |
csak olvasható fájl |
H (hidden) |
rejtett fájl |
S (system) |
az operációs rendszerhez tartozó fájl |
Ha a fájl vagy könyvtár NTFS fájlrendszert használó meghajtón található, további beállításokat is elvégezhetünk:
Gyökér (root): helyi vagy hálózati meghajtó, ill. annak betűjele, főkönyvtár
a:\, b:\ |
floppy meghajtó |
c:\ d:\ e:\ stb. |
hard diszk(ek), hard diszk partíciók, CD-ROM meghajtó(k) |
z:\ |
hálózati meghajtók (általában az ábécé végétől induló jelzéssel) |
Könyvtár, mappa (directory): névvel ellátott fájlcsoport
A merevlemezek nagy tárolókapacitása miatt a fájlok logikus rendszerezése
szükséges
Elnevezés: a fájlnevekhez hasonló elv szerint, a tartalomra utalva.
A könyvtárak egymásba ágyazhatóak: alkönyvtárak
elérési út (path): egy fájl pontos helye a főkönyvtárhoz
viszonyítva. Példa:
c:\windows\fonts\symbols\musical
Ha áttekintjük a Windows rendszer által használt adatszerkezet felépítését, láthatjuk, hogy a számítógépeknél általában, és a DOS/Windows korábbi verzióiból megszokott fa struktúra szerinti adattárolás nem változott, mindössze kibővült néhány elemmel, amelyek a rendszer áttekinthetőségét és használhatóságát könnyítik meg. Az adatszerkezet kiindulópontja az Asztal. Ebből nyílnak a Sajátgép, Hálózatok és Lomtár logikai mappái. Az Asztal mappában található objektumok természetesen a munkaasztalról is elérhetőek, de megjelennek a fájlkezelésre szolgáló eszközökben is.
A logikai mappák fogalma alatt azt értjük, hogy ezek a mappák nem hagyományos mappák, azaz nem arra valók, hogy fájlokat vagy további mappákat helyezzünk el bennük, hanem viselkedésük, kezelésük módja miatt nevezzük így.
Sajátgép
A Sajátgép logikai mappa tartalmazza a saját (lokális) helyi gépünk
erőforrásait, úgymint
|
Tekintsük át a Sajátgép tartalmát. A megjelenő listában az
aktuális mappa tartalmát láthatjuk. A megjelenő ikonok az almappákat és
fájlokat jelölik. A belső mappák jelölése: egy sárga mappa; a fájlokat típusuk
szerint más-más ikonok jelölnek. Azt, hogy egy mappa tartalmaz-e belső mappákat
vagy fájlokat, úgy állapíthatjuk meg, ha az ikonjára vagy nevére duplán
kattintva megnyitjuk azt.
Eszköztárak:
A menüsor alatt elhelyezkedő terület, egy vagy több sorban elhelyezkedő, a
munkavégzést megkönnyítő ikonsor.
A Cím eszköztár legördülő menüben tartalmazza az elérhető meghajtók és
logikai mappák listáját. Ha a fájlrendszer bonyolultsága miatt eltévednénk, itt
mindig visszaléphetünk a gyökérkönyvtárainkhoz. A Szokásos eszköztár
tartalmazza a fájlrendszerben való navigálás és műveletek gombjait. Az aktuális
mappából a magasabb szintre visszalépni az "Egy szinttel fel"
ikonra kattintva lehet.
|
A Sajátgép és a belőle nyíló objektumok tartalmát több nézetben tekinthetjük
meg, amit az eszköztáron állíthatunk be.
A Nagy ikonok nézet a fájlok és mappák nevét és ikonjait jeleníti meg. A
Kis ikonok nézetben a mappa- és fájlnevek egymás mellett jelennek meg.
Ebben a nézetben a sorbarendezés (pl. ábécérendben) balról jobbra halad, így
alakítva ki az ablakban megjelenő oszlopokat. A Lista nézet az iménti
adatokat oszlopokba rendezve jeleníti meg. A legtöbb esetben ez a
legpraktikusabb nézet. A Részletek nézet a fájlok és mappák kicsinyített
ikonjain és nevén kívül tartalmazza az adott adattípus leírását, a fájl
méretét, és az utolsó módosítás idejét.
Amennyiben a lista valamelyik oszlopa nem elég széles, az oszlopfejléceket
elválasztó vonal húzásával állíthatjuk megfelelő szélességűre. Ha az elválasztó
vonalra kettőt kattintunk, az oszlop szélessége automatikusan a legszélesebb
bejegyzés hosszához igazodik.
Az oszlopfejlécre kattintva sorba is rendezhetjük az objektumokat (ábécérend,
típus, méret, vagy az utolsó módosítás dátuma szerint). Újbóli kattintással
válthatunk a növekvő és csökkenő rendezés között.
Az ikonok elrendezését és megjelenítését a Nézet menüből is szabályozhatjuk
(Nézet - Ikonok elrendezése, ill. Nézet - Nagy ikonok, Kis ikonok, Lista,
Részletek) Ugyanerre az eredményre jutunk, ha az egér jobb gombjával az ablak
területén kattintunk, majd a felbukkanó helyi menüből választjuk ki a megfelelő
parancsot.
Az eszköztárakat testre is szabhatjuk az eszköztár területén az egér jobb
gombjával kattintva, majd az alábbi lehetőségek közüli választással: Szokásos
gombok, Címsáv, Hivatkozások, Rádió, Testreszabás.
Érdemes megjegyezni: a legtöbb művelet - használjuk akár a Sajátgép ablakot, a Windows Intézőt, vagy a legtöbb felhasználói programot - több módon is elvégezhető: 1.Menü segítségével. A programjainkban a rendelkezésre álló parancsokat logikusan felépített menüből választhatjuk ki. 2.Eszköztárról. A leggyakrabban használt parancsok ikonjai a menüsor alatti eszköztáron megtalálhatóak (pl. másolás, kivágás, beillesztés, nyomtatás, stb.) 3.Helyi menüvel. Az egér jobb gombjának lenyomásával az aktív objektumra vonatkozó, leggyakrabban használt parancsok listáját hívhatjuk elő. 4.Billentyűkombinációval. A gyakorlott felhasználók munkájának meggyorsítására szolgálnak a billentyűkombinációval előhívható parancsok, pl. másolás, beillesztés, nyomtatás, stb.
Lomtár
|
Az Asztalon található Lomtárba kerülnek alapértelmezés szerint a lokális
gép merevlemezéről törölt fájljaink és mappáink. Ha ezeket a fájlokat később
valóban szükségtelennek találjuk, innen törölhetjük azokat, illetve a
tévedésből törölt állományokat innen állíthatjuk vissza eredeti állapotukba.
(Fájl menü - Lomtár ürítése, ill. Fájl menü - Előző méret, Fájl menü - Törlés)
A Lomtár tartalmát többi mappánkhoz hasonlóan kezelhetjük, onnan fájlokat
törölhetünk, másolhatunk, stb.
Érdemes tudni, hogy
Ha egy állományt a merevlemezünkről biztosan törölni kívánunk, a SHIFT+DEL billentyűkombinációval törölve nem kerülnek a Lomtárba, hanem azonnal megsemmisülnek.
A Windows Intéző a fájl- és mappakezelést megkönnyítő
segédprogram. Felépítését tekintve hasonlít a korábbi Windows verziók
fájlkezelőihez: kettéosztott ablakában baloldalt a háttértároló(k) fa
struktúrába rendezett tartalmát, jobboldalt a kiválasztott mappa tartalmát
láthatjuk.
Indítása: a Start menü Programok, Kellékek csoportjából, vagy az
asztalon a Sajátgép ikonra a SHIFT billentyű lenyomásával egy időben történő
kétszeres kattintással.
A Windows Intéző megjeleníti a számítógépen található fájlok, mappák és meghajtók hierarchikus felépítését. Megjeleníti a számítógépen meghajtó-betűjellel rendelkező hálózati meghajtókat is. Megtekinthető a Hálózati helyek mappa is, amely megjeleníti a helyi hálózathoz csatlakozó számítógépeket. A Windows Intéző segítségével másolhatók, áthelyezhetők, átnevezhetők és kereshetők a fájlok és mappák. Például megnyitható a másolni vagy áthelyezni kívánt mappa vagy fájl, és másik mappába vagy akár másik meghajtóra húzható át.
A helyi meghajtókon a Windows telepítésével a merevlemezen létrejön egy jellemző adatszerkezet, azonban ez a szerkezet nem állandó vagy rögzített, a felhasználó tetszése szerint hozhat létre új mappákat, fájlokat; sok esetben a felhasználónak kell létrehoznia és kezelnie az általa készített dokumentumok tárolására szolgáló könyvtárszerkezetet is. A C meghajtón általában megtalálható fa struktúra a következő mappákat tartalmazza:
Ha egy mappa további belső mappákat tartalmaz, a bal oldali panelen a mappa előtt álló + jelre kattintva bonthatjuk ki azt. Ugyanezt az eredményt kapjuk, ha a jobb panelen a belső mappák egyikére kettőt kattintunk. Ekkor a kiválasztott mappa tartalma is láthatóvá válik.
Új mappák létrehozása
Válasszuk ki azt a mappát, amelyen belül szeretnénk létrehozni az újat. Itt a
kétféleképpen hozhatunk létre új mappát:
Ezután megjelenik az új mappa. A rendszer által felkínált név helyére gépeljük be a kívánt könyvtárnevet, majd üssük le az ENTER billentyűt. Új mappák létrehozásához ismételjük meg a műveletet. A mappák elnevezésére maximum 255 karaktert használhatunk, akár ékezeteket, szóközt is. Nem használhatjuk azonban a következő karaktereket: \ / ? * " | < >
Új fájlok létrehozása
Ha egy új fájlt szeretnénk létrehozni, válasszuk ki azt a mappát, amelyben
tárolni kívánjuk.
A fájltípus kiválasztása után az új fájl megjelenik a kívánt
helyen. Ezután nevezzük el. Az így létrehozott fájl azonban még üres. Kétszeri
kattintással megnyithatjuk és szerkeszthetjük.
Ezzel a módszerrel csak a leggyakrabban használt fájltípusokat hozhatjuk létre.
Más fájlokat, pl. Office dokumentumokat kényelmesebb a megfelelő alkalmazással
(pl. szövegszerkesztő program) létrehozni.
Vágólap
|
A vágólap a Windows által biztosított elkülönített memóriaterület. Használata:
egy kijelölt objektumot (szöveg, szövegrész, kép, hang, fájl, mappa, stb.) ide
másolva bármely Windows-os alkalmazásba beilleszthetjük, egymás után többször
is. Egyszerre azonban csak egy objektum kerülhet a vágólapra.
A vágólap tehát az adatok átvitelére használható egy programon belül, de
programok közt is.
A Windows egyik hasznos szolgáltatása, hogy a Vágólapra kép formájában ki
tudjuk tenni a teljes képernyő (PrintScrn) vagy az aktív ablak (ALT+PrintScrn)
tartalmát, hogy aztán dokumentumainkba beilleszthessük, vagy egy
rajzolóprogrammal módosítsuk. E jegyzet képeinek többsége is ezzel a módszerrel
készült.
Fájlok és mappák másolása
Másoláskor a következőképpen járunk el: jelöljük ki a másolandó fájlt vagy
mappát egy kattintással. Az objektum vágólapra való másolásához használhatjuk
Ezután nyissuk ki azt a mappát, ahová az objektumot másolni kívánjuk. A beillesztéshez használjuk
Fájlok és mappák áthelyezése
Előfordulhat, hogy adataink tévedésből rossz helyre kerültek, vagy fájljainkat
szeretnénk más mappákba úgy átmozgatni, hogy eredeti helyükön ne maradjon róluk
másolat. Fájlok vagy mappák áthelyezésekor a következőképpen járunk el:
jelöljük ki az áthelyezendő fájlt vagy mappát egy kattintással. Az objektum
vágólapra való másolásához használhatjuk
Ezután nyissuk ki azt a mappát, ahová az objektumot átmozgatni kívánjuk. A beillesztéshez használjuk
Meghajtók, mappák, fájlok tulajdonságai
Egy fájl, mappa vagy meghajtó tulajdonságait akkor is leolvashatjuk, ha éppen
nem vagyunk Részetek nézetben. Ezt többféleképp tehetjük meg: válasszuk ki az
objektumot egyszeres kattintással, majd
Meghajtó tulajdonságai: címke, felhasznált és szabad terület, kapacitás. Az eszközök fülre kattintva a lemez fizikai karbantartását végző segédprogramokat érhetjük el. A Megosztás fülre kattintva elérhetővé tehetjük a kiválasztott elemet (meghajtó, mappa) helyi hálózatunkon keresztül más felhasználók részére is.
Mappa és fájl tulajdonságai: Típus, hely, méret, létrehozás, utolsó hozzáférés, módosítás dátuma, attribútumok.
Fájlok és mappák átnevezése
Ha egy fájlt vagy mappát át kívánunk nevezni, egyszeres kattintással válasszuk
ki. Ezután több lehetőségünk van:
Ezután írjuk be az új nevet. A művelet (pl. ha véletlenül rossz mappát jelöltünk ki, vagy a dupla kattintás sikerült túl lassúra) az ESC billentyűvel visszaléphetünk.
Fájlok és mappák törlése
A kijelölt fájl vagy mappa törlésére több eszközünk van, törölhetjük:
Húzzuk a kiválasztott elemet az Asztalon található (és az Intéző bal oldali paneljében is elérhető) Lomtár ikonra.
A legutolsó művelet visszavonása
A fent felsorolt műveleteket lehetőségünk van visszavonni, ha tévedésből
hajtottuk végre őket: a CTRL+Z billentyűkombinációval, a Szerkesztés menü
Visszavonás parancsával, vagy az eszköztár Visszavonás ikonjára kattintva.
Több fájl vagy mappa kijelölése
Egy-egy művelet több fájlt és/vagy mappát is érinthet. Ebben az esetben
célszerű ezeket az elemeket egyszerre kijelölni és a műveletet csak egyszer
elvégezni. Az aktív mappában kijelölést több módon végezhetünk:
Parancsikonok
A parancsikon egy fájl vagy mappa gyors elérésére szolgáló mutató. Jellegzetes
helye az Asztal, de bármely mappában elhelyezhetjük. A Start menü például ilyen
parancsikonok gyűjtője. Parancsikont rendelhetünk hozzá bármelyik programhoz,
dokumentumhoz vagy nyomtatóhoz, legyen az az asztalon, vagy bármelyik mappában.
Parancsikonokkal lehet a leggyorsabban elérni a gyakran használt elemeket.
Hajlékonylemez formázása
Ahhoz, hogy egy floppy lemezre adatokat írhassunk, legalább egyszer elő kell
készítenünk az adatok helyét. Ezt a műveletet nevezzük a lemez formattálásának
vagy formázásának. Napjainkban a piaci kínálat nagy többsége előre formázott
lemezekből áll, mégis előfordulhat, hogy szükségünk van egy lemez
megformázására. Akkor is a formázás műveletet használjuk, ha teljesen le
kívánunk törölni egy lemezt, de mivel azon sok állomány található, a formázás
gyorsabb, mint a fájlok egyenkénti törlése.
A formázáshoz nyissuk meg a Sajátgép mappát. Egyszeres
kattintással jelöljük ki a formázni kívánt (A: vagy B:) meghajtót, majd
válasszuk a Fájl menü Formázás parancsát.
Figyelem! A merevlemez formázásától óvakodjunk, mert ez minden adatunk
és programunk elvesztését jelenti.
Hálózat
|
A helyi hálózaton összekötött számítógépek közt a Hálózatok logikai mappában
tallózhatunk. Az itt megtalálható számítógépeknek természetesen nem láthatjuk a
teljes tartalmát, csak azokat a mappáit, amelyeket a gép tulajdonosa elérhetővé
tett a hálózaton, más szóval megosztott. Az osztott mappákhoz
lehetőségünk van ún. hálózati meghajtót csatlakoztatni, így munkánk közben úgy
dolgozhatunk velük, mint bármelyik saját mappánkkal. A kapcsolat létrehozásának
és megszüntetésének legegyszerűbb módja a jobb egérkattintás, majd a Hálózati
meghajtó csatlakoztatása (ill. leválasztása) parancs. Ugyanezt megtehetjük az
Eszköztár ikonjaival is.
Másolás és mozgatás Fogd és vidd (Drag and Drop) módszerrel
A Windows munkánk meggyorsítása érdekében lehetővé teszi a Fogd és vidd módszer
használatát a menük helyett. A Sajátgépben vagy a Windows Intézőben keressük
meg a mozgatni kívánt fájlt vagy mappát. Biztosítsuk, hogy a képernyőn látható
legyen az a hely (legyen az akár egy másik Intéző-ablak), ahová a fájlt vagy
mappát mozgatni szeretnénk. Húzzuk a fájlt vagy a mappát a kívánt helyre. Ennek
a műveletnek az eredménye attól függ, hogy milyen fájlt mozgattunk és hová.
Tippek:
Ha a jobb oldali egérgombbal végezzük a húzást, akkor egy menü fog megjelenni
különféle lehetőségeket felkínálva.
Ha a fájlt ugyanazon lemez másik mappájába húzzuk át, akkor ezzel a fájlt egy
másik helyre helyezzük át. Ha viszont másik lemezen lévő mappába húzzuk, akkor
ezzel a fájlt átmásoltuk.
Ha a húzás közben lenyomva tartjuk az alábbi billentyűk valamelyikét, akkor a
következők fognak történni:
Leírások+Referenciák / Perl röviden / Fájl kezelés
A fájlkezelés az egyik legegyszerûbb dolog a Perl nyelvben. Mivel ez egy olyan terület, amelyik minden programban elõfordul, és mivel a Perl elsõsorban a UNIX operációs rendszerhez lett kitalálva, ahol a fájl alapfogalom, ezért nem csak könyvtári függvények, hanem programszerkezetek is rendelkezésre állnak a fájlok kezelésére.
A legegyszerûbb fájlkezelõ utasítás, amellyel korábbi példákban is már találkoznod kellett a print. Ez az utasítás, vagy ha úgy tetszik beépített függvény egy fájlba, vagy a szabványos kimenetre írja ki a paraméterként megadott értékeket. A paraméterek lehetnek sztringek, valós vagy egész számok, változók, amelyek ilyen értékeket tartalmaznak, de lehetnek mutatók, vagy nem skalár értékek is. Ez utóbbi esetben a print utasítás valamilyen olyan karakter alakban írja ki a változó, vagy kifejezés értékét, hogy az legalább hibakeresési célra használható legyen.
Nézzünk egy egyszerû példát:
$a = 1; $b= 'alma\n'; $c = "alma\n"; $d = \$c;és az eredményt:
1alma\nalmaLátszik, hogy $a értéke 1, $b értéke az aposztróf használata miatt nem lett kifejtve, és emiatt nem újsor karakter van a végén, hanem egy \ és egy n betû, de $c végén már valóban van egy soremelés. $d egy mutató, amelyik a $c változóra mutat, és ennek nyomtatott képe a SCALAR(xxx). A konkrét érték minden egyes futtatásnál más lehet, attól függõen, hogy $c hova kerül a memóriában.
A print utasítás egyes paramétereit vesszõkkel választottuk el, azonban nagyon gyakran úgy akarunk kiíratni változó értékeket, hogy közbe mindenféle apróbb füzéreket helyezzük el. Például (ez a program az f2.pl fájlban van):
$a=3; $b=55;Ennek kimenete:
A értéke=3 B értéke=55Aki azonban ezt a print utasítást leírta az nagyon nem Perl fejjel gondolkozott. Az IGAZI Perl programozó ilyenkor a következõ sorokat írja (ez a program az f3.pl fájlban van):
$a=3; $b=55;aminek kimenete
A értéke=3 B értéke=55Ha ez nem ugyanaz, mint az elõbb, akkor elrontottam a példát.
Természetesen nem csak a szabványos kimenetre lehet írni, hanem bármilyen fájlba, amelyiket írásra megnyitott a program. A fájlok megnyitására az open utasítás szolgál, a fájlok bezárására pedig a close. Nézzünk egy példát:
open(F,"<f2.pl");Ez a kis program beolvassa az egyik fenti példaprogramot, és kiírja a f3.bak fájlba azt a verziót, amelyre azt mondtuk, hogy azt egy IGAZI Perl programozó készítette.
Egy kicsit lehet ebbõl a példából tanulni a reguláris kifejezéseket is, de most nem ez a lényeg. Figyeljünk arra, hogy hogyan nyitottuk meg a fájlt, hogyan írtunk bele, hogyan olvastunk belõle, és hogyan zártuk le.
Az elsõ dolog amit megfigyelhetünk, az az, hogy a fájlokat nem változókkal azonosítjuk, hanem handlerekkel (ki tudja a hivatalos terminológiát erre a szóra? fogantyú?). Ez azt jelenti, hogy a fájl azonosító elé nem írunk $ jelet, és általában nagybetût szoktunk használni a fájlazonosításra a programon belül, de ez csak konvenció, nem kötelezõ.
A másik dolog, amit meg lehet figyelni, hogy az open utasítás második argumentuma nem egyszerûen a fájl neve, hanem egy olyan füzér, amely tartalmazza a fájl nevét, de azt is, hogy a fájlt hogyan akarjuk megnyitni: írásra, olvasásra, vagy mindkettõre (ez utóbbira az elõzõ példában nincs minta, majd még lesz).
Ha az open utasításban a második argumentumban a fájl neve elõtt nincsen semmilyen jel, akkor a fájlt olvasásra nyitjuk meg. Ha < jel van a fájlnév elõtt, az ugyanaz, mintha nem használtunk volna semmilyen jelet. Általában szokás ezt használni, annak ellenére, hogy ez a default, mert olvashatóbbá teszi a programot.
Ha a fájl neve elõtt > jel van, akkor írásra nyitottuk meg a fájlt. Ha a fájl neve elõtt < jel van, akkor olvasásra. Ezen kívül még használható a >> jel a fájlhoz való hozzáírásra, a +< a fájl írására és olvasására. Erre használható a +> jel is, ez azonban megnyitáskor törli a fájlt.
A fájlmûveletek mindig a fájl aktuális pozíciójára vonatkoznak, amelyet egy fájl foganytú (handle) tartalmaz. Amikor kiírunk valamit, akkor oda íródik a szöveg ahova a foganyú mutató mutat, és ezután a fogantyú mutató a kiírt szöveg utánra fog mutatni. Amikor beolvasunk valamit egy fájlból, akkor onnan történik az olvasás ahova a fogantyú mutató mutat, majd az olvasás után a fogntyú motató a beolvasott adatok utánra fog mutatni. Ez olyan, mint más nyelveknél.
Egy fájlból olvasni a <F> alakban lehet, ahol a kisebb és a nagyobb jelek közé kell írni a fájlkezelõt. Ez az utasítás skalár környezetben egy rekordot olvas be, lista környezetben pedig a hátralevõ rekordok listáját. Egy rekord általában egy sor, mivel a rekord határoló karakter $/-ben megadva LF, de ha $/-nek más értéket adunk, akkor a beolvasás is másképp hajtódik végre. A végletekig elmenve ha a $/ változónak undef értéket adunk, akkor egész fájlokat tudunk változóba nagyon gyorsan beolvasni.
Ha egy fájlon belül akarjuk mozgatni a fogantyú mutatót, akkor erre a legegyszerûbb módszer a seek függvény meghívása. Ennek formája:
seek FILEFOGÓ,POZÍCIÓ,HONNANA FILEFOGÓ
a fájlkezelõ, a POZÍCIÓ az a hely ahova állítani szeretnénk a
mutatót, a HONNAN paraméter pedig lehet 0, 1 vagy
Általában ajánlatos ezt a függvényt meghívni minden olvasási és írási mûvelet között. Ennek az oka nem a Perl nyelvben keresendõ, hanem azokban a könyvtári függvényekben, amelyeket az operációs rendszer biztosít a Perl programok számára. A seek meghívásának a hatására a kiírandó adatok kikerülnek a pufferbõl, míg egy olvasás utáni írásnál egyes operációs rendszereken nem.
Ha azt akarjuk megtudni, hogy a fájlfogantyú mutatója éppen hova mutat, akkor a tell függvényt hívhatjuk meg. Argumentuma a fájlfogantyú, ha nem adunk meg argumentumot, akkor az utoljára olvasott fájlt fogja használni.
Egy fájl hosszát le lehet rövidíteni a truncate függvénnyel. Ennek két argumentuma van: a fájlfogantyú, és a megkívánt hossz.
Amikor egy fájlba írunk, vagy olvasunk onnan, akkor elõfordulhat, hogy más is hozzá akar férni a fájlhoz. Ez pedig gondot okozhat, ha egyszerre több processz is ír a fájlba. Ha tehát egy fájlt le akarunk foglalni, akkor a flock függvényt kell használni. Ennek két argumentumot kell megadni. Az elsõ a fájlfogantyú, a második a lezárás módja:
A flock függvény addig fog várni, amíg hozzá nem lehet a megfelelõ módon férni a fájlhoz. Fontos, hogy eközben a fájlmutató értéke nem változik. Ha például egy fájlhoz hozzá akarunk írni, vagyis a >> jelet használtuk a fájl megnyitására, majd ezután a megnyitott fájlt megpróbáljuk lezárni flock függvénnyel, akkor ezután egy seek F,2 függvényhívást is meg kell ejtenünk, hogy a fájlmutató a fájl végére mutasson.
A fájlokat kezelõ függvényeknél általában nem csak egy fájlfogantyú nevet lehet megadni, hanem használni lehet ehelyett változót, amelynek értéke a fájlfogantyú neve. Ez alól Win32 környezetben egyes Perl verziók kivételek, ahol a truncate függvény hibás, és emiatt itt csak kerülõ út alkalmazható.
Vannak még más fájlkezelõ függvények is, ezekrõl részletesen a Perl beépített függvényeinél.
copy
Egy vagy több fájl másolása egy másik helyre. Használata:
Fájlok hozzáfűzéséhez célként adjunk meg egyetlen fájlt, de forrásként több fájlt (helyettesítő karakterek vagy a fájl1+fájl2+fájl3 alak használatával).
ren, rename
Fájl és könyvtár átnevezése. Használata:
Célként új meghajtó vagy elérési út nem adható meg.
move
Fájlok áthelyezése valamint fájlok és könyvtárak átnevezése. Egy vagy több
fájlt áthelyezéséhez:
Könyvtár átnevezéséhez:
MOVE [/Y | /-Y] [meghajtó:][útvonal]könyvtárnév1 könyvtárnév2diskcopy
Az egyik hajlékonylemez tartalmának másolása egy másikra. Használata:
A két hajlékonylemeznek ugyanolyan típusúnak kell lennie. A meghajtó1 és meghajtó2 paraméternek ugyanazt a meghajtót is megadhatjuk.
xcopy
Fájlok és könyvtárfák másolása. Használata:
attrib
Fájlattribútumok megjelenítése vagy módosítása. Használata:
A Turbo Pascal fájl fogalmán két dolgot érthetünk:
eszköz (device) fájlok: a számítógépen található I/O eszközök (billentyűzet, képernyő, nyomtató) és a kommunikációs csatornák közvetlen elérését teszik lehetővé
lemez (disc) fájlok: a számítógép lemezegységein tárolt egymással összefüggő adatok együttesét jelölik. Ezeket tartalmuk alapján szöveges (text), típusos és típus nélküli fájlok csoportjára oszthatjuk.
A fájlkezelés lépései programozási nyelvtől függetlenek. A használni kívánt fájlt előbb meg kell nyitni, mivel csak így férhetünk hozzá a benne tárolt adatokhoz. Ezután az adatokat olvashatjuk a fájlból, vagy írhatjuk a fájlba. Miután befejeztük munkánkat, a fájlt le kell zárni, hogy annak adatai a háttértáron megőrzésre kerüljenek.
Nézzük külön-külön a különböző tartalmú és típusú fájlokat először röviden:
szöveges fájlok: ezek a fájlok olyan sorokból épülnek fel, amelyek karaktereket tartalmaznak, és a kozsivissza/soremelés (CR/LF) vezérlőkarakterek zárják le. Ezeknek a vezérlőkaraktereknek az ASCII kódjuk 13 és 10 és a sorok végét jelzik a fájlban. A szöveges fájlokat tetszőleges szövegszerkesztővel létrehozhatjuk és módosíthatjuk. Ezek a fájlok elérésük és használatuk szempontjából a szekvenciális fájlokhoz tartoznak. Ez annyit jelent, hogy az egyes sorokat mindig a legelső sortól kezdve, egyesével olvashatjuk illetve írhatjuk. Kivéve, ha a fájlt a hozzáírás műveletéhez nyitottuk meg, mert ilyenkor az írás a fájl utolsó sora után kezdődik. A szöveges fájlt vagy csak olvashatjuk, vagy csak írhatjuk, tehát a fájl használata előtt el kell döntenünk, hogy mit szeretnénk csinálni.
típusos fájlok: olyan adathalmazok, amelyek jól definiált, azonos típusú összetevőkre, elemekre bonthatók. Ezen elemek típusa tetszőleges (kivéve fájl és objektum). A fájlban tárolt elemek a felírás sorrendjében 0-tól kezdve egyesével sorszámozódnak. A fájl feldolgozásánál ezen sorszám felhasználásával pozícionálhatunk az állomány valamely elemére. A típusos fájlok szerkezete valahogy így néz ki:
1. elem |
2. elem |
3. elem |
|
|
|
n. elem |
A szóhasználatban a rekord kifejezés terjedt el az elemek megnevezésére, de mi tudjuk, hogy a record kifejezés a Pascalban egy felhasználói adattípust jelent, tehát maradjunk az elem megnevezésnél.
A típusos fájlon végzett műveletek esetén, a művelet egysége az elem. A fájl méretét szintén a benne található elemek száma határozza meg. A típusos fájlok feldolgozása történhet szekvenciálisan illetve direkt módon egyaránt. A direkt módon történő feldolgozás lényegesen hatékonyabb, hisz a lényege annyi, hogy a fájlban mi pozícionálunk, ezáltal azon az elemen végezzük el műveleteinket amelyiken akarjuk. Ez a pozícionálás nem egyirányú, vagyis nem kell mindig a fájl elejéről indulni, bárhonnan bármerre mozoghatunk, mert minden elemnek van egy sorszáma, ami által elérhetjük.
típus nélküli fájlok: ezek használata nagy segítséget jelent az ismeretlen szerkezetű fájlok feldolgozásában. Amíg a szöveges fájlok sorelválasztó karaktereket tartalmaznak, a típusos fájlok adott típusú elemekből állnak, addig a típus nélküli fájlnál tetszőleges adatok olvashatók illetve írhatók. Mivel az adatforgalom a fájl és a program között mindenféle ellenőrzés nélkül megy végbe, gyors fájlkezelés valósítható meg. A típus nélküli fájlokkal végzett műveletekben egyetlen lépésben elérhető egység a blokk.
eszközök használata: a Pascal, ugyanúgy mint az operációs rendszer, a külső hardvert ( perifériákat: billentyűzet, képernyő, nyomtató) eszközökként kezeli. Programozói szempontból az eszköz egy fájl, amelyet ugyanazon eljárásokkal és függvényekkel érhetünk el, mint a lemez fájlokat. Ezen eszközök kezelésére általában szöveges fájlokat használunk, de bizonyos esetekben a típus nélküli fájl hatékonyabb megoldást biztosít. Az eszközök:
Fájlnév |
Szabványos eszköz |
Input vagy Output |
AUX |
Auxiliary (a COM1 szinonim neve) |
I/O |
COM1, COM2 |
Soros kommunikációs portok |
I/O |
CON |
Konzol (I - billentyűzet, O - képernyő) |
I/O |
LPT1, LPT2, LPT3 |
Nyomtató portok |
O |
PRN |
Nyomtatók (LPT1 szinonim neve) |
O |
NUL |
Nulla eszköz |
I/O |
Szöveges fájl
azonosítás
ahhoz, hogy a programunkból szövegfájlt használjunk, deklarálnunk kell egy fájlváltozót, amely egyértelműen azonosítja a fájlt a programon belül. Ezen változó típusa Text.
var fájl_változó: Text;
Ezután a fájlváltozóhoz hozzá kell rendelni az operációs rendszer szintjén található fájlt, hogy a program tudja melyik fájllal kell dolgoznia.
Assign(fájl_változó, fájl_név);
Ezután mi a programon belül már csak a fájl_változót használjuk azonosításként, magával a fájllal nem kell törődnünk.
a szövegfájlok megnyitására három módszer létezik. Mint azt már említettem vagy olvasásra, vagy írásra tudunk megnyitni egy szövegfájlt. Tehát a három kifejezés:
reset(fájl_változó);
Egy létező fájlt nyit meg, csak olvasásra. A megnyitás után az eof függvény true értékkel jelzi, ha a fájl üres. Ezen kívül a fájl elejére állítja az aktuális pozíciót (már megnyitott fájlon is elvégezhető).
rewrite(fájl_változó);
Egy új szövegfájlt hoz létre, vagy a létező fájlt újra írja (így annak teljes tartalma elvész). Az így megnyitott fájlokon csak az írás művelete hasznűlható. Az aktuális pozíció a fájl elejére kerül.
append(fájl_változó);
Egy létező fájlt nyit meg, csak hozzáírásra. Az aktuális pozíció a fájl végére kerül.
a fájlba történő írás és a fájlból történő olvasás a már jól ismert write, writeln, read, readln eljárások módosított változataival oldhatjuk meg. Mindegyik eljárásnál első paraméterként a fájl_változót kell megadni:
write(fájl_változó, kifejezéslista); writeln(fájl_változó, kifejezéslista);
A különbség a két eljárás között az, hogy a writeln eljárás az írási művelet végeztével sorvége (CR/LF) jelet is ír a fájlba.
read(fájl_változó, kifejezéslista); readln(fájl_változó, kifejezéslista);
A readln eljárás, ellentétben a read eljárással, a fájlból mindig teljes sort olvas be, így az aktuális pozíció a művelet után a következő sor eleje lesz.
Ha a szövegfájlt olvasásra nyitottuk meg, lehetőségünk van bizonyos ellenőrzések beépítésére, amelyek szükségesek ahhoz, hogy a programunk helyesen dolgozza fel a fájlt.
A fájl végének ellenőrzésére az eof(fájl_változó) függvény szolgál. Ez egy logikai típusú eredményt ad vissza, ami jelzi, hogy az aktuális pozíció a fájl utolsó eleme után helyezkedik el (true), vagy sem (false). Szövegfájloknál a fájl végét két dolog is jelezheti: a fájlban egy end-of-file jelzőt találunk (ASCII 26), vagy elértük a fájl fizikai végét. A seekeof(fájl_változó) függvény akkor is a fájl végét jelzi (true), ha az aktuális pozíció és a fájl vége között már csak szóköz, tabulátor vagy sorvége karakterek vannak.
Szeretnél friss híreket a weboldaladra? Katt ide a részletekért!
A sorok végének ellenőrzésére szintén két függvényt használhatunk. Hasonlóan az előzőhöz az eoln(fájl_változó) függvény true értékkel tér vissza, ha az aktuális pozíció az end-of-line (sorvége - CR/LF) jelzőn áll. A seekeoln(fájl_változó) akkor is jelzi a sor végét, ha az aktuális pozíció és a sor vége között már csak szóköz vagy tabulátor karakterek vannak.
Típusos fájl
var fájl_változó: file of típus;
A típus tetszőleges Pascal típus lehet, kivéve a file és az object típusokat. Tehát lehet egyszerű és összetett, beépített vagy felhasználói típus egyaránt. Ezután a már előbb ismertetett módon az assign paranccsal hozzárendelünk a fájl_változóhoz egy fájlnevet.
a megnyitás előtt nem kell meggondolnunk, hogy most olvasni vagy írni akarunk a fájlba, mert ez teljesen mindegy. Azt kell csak eldönteni, hogy egy létező fájlt akarunk megnyitni, vagy pedig egy új fájlt akarunk létrehozni vagy a létezőt felülírni.
reset(fájl_változó); rewrite(fájl_változó);
Mindkét megnyitási mód után az aktuális pozíció a fájl elejét jelöli.
az adatok kiírására a write, míg az olvasásra a read eljárásokat használhatjuk.
read(fájl_változó, változólista);
Az aktuális pozíciótól kezdve beolvassa a fájl elemeit a változólistában megadott változókba. A művelet végrehajtása után az aktuális pozíció az utoljára beolvasott elem után helyezkedik el.
write(fájl_változó, változólista);
Az aktuális pozíciótól kezdve, a változólistában megadott változók tartalmát a fájlba írja. Az aktiális pozíció az utoljára kiírt elem után helyezkedik el. Ha az írási művelet megkezdésekor az aktuális pozíció a fájl végén volt, akkor a write eljárás a fájlt kibővíti a megadott elemekkel.
Az elemek közvetlen elérését teszi lehetővé a seek eljárás:
seek(fájl_változó, longint_index);
Meghívása után az aktuális pozíció a longint_index paraméterben megadott pozíció lesz. Van még két függvény, ami a pozícionálásnál is felhasználható, és nagy segítséget nyújthat.
filesize(fájl_változó)
Ez a függvény longint típusú értékben adja meg a fájlban található elemek számát. Ha fájl üres, a visszaadott érték 0.
filepos(fájl_változó)
Szintén longint típusú értékben az aktuális pozíció indexét adja vissza. A fájlban az elemek sorszámozása 0-tól kezdődik. A fájl végénak elérésekor a filesize és a filepos függvények ugyanazt az értéket adják.
Az utolsó eljárással a fájlunkat "lecsonkíthatjuk".
truncate(fájl_változó);
Szeretnél friss híreket a weboldaladra? Katt ide a részletekért!
A művelet végrehajtása után az aktuális pozíció lesz a fájl vége. Így az aktuális pozíciótól a fájl végéig tartó részt levágjuk, amelynek tartalma elvész.
Típus nélküli fájl
Plusz az assign parancs a már jól megismert módon.
hasonlóan működik mint a típusos fájloknál, egy kis kiegészítéssel. Mint már mondtam a típus nélküli fájlokkal végzett műveletekben, egyetlen lépésben elérhető egység a blokk. A blokk mérete alapértelmezésben 128 bájt, de ez a fájl nyitásakor a reset és rewrite eljárások második paraméterével módosítható.
reset(fájl_változó, blokk_méret); rewrite(fájl_változó, blokk_méret);
a típus nélküli fájlok írása és olvasása szintén blokkban történik. A blockread eljárást olvasásra, a blockwrite eljárást pedig írásra használjuk:
BlockRead(fájl_változó, puffer, cnt); BlockWrite(fájl_változó, puffer, cnt);
A két eljárás paraméterezése teljesen megegyezik: természetesen meg kell adnunk a fájlt azonosító fájl_változót, az adatátvitelhez használt puffert (bármilyen típusú lehet) és az egy lépésben olvasni, illetve írni kívánt blokkok számát (cnt).
A seek eljárás, ennek megfelelően, blokkonkénti pozícionálást hajt végre, illetve a filepos függvény az aktuális blokk sorszámával tér vissza. A filesize függvény pedig a fájl_fizikai_mérete div blokk_méret kifejezés értékével tér vissza. Ha a fájl hossza nem osztható maradék nélkül a blokk_mérettel, akkor a fennmaradó bájtok nem érhetőek el. Ezért, ha olyan programot kívánunk írni, amely tetszőleges fájlt fel tud dolgozni, akkor a blokk_méretet 1-nek kell választanunk. A truncate eljárás szintén használható.
Nem véletlenül nem említettem egyik típusnál sem a fájl lezárását. Ugyanis ez az eljárás mindegyik típusnál ugyanaz, bárhogyan is nyitottuk meg azt:
Szeretnél friss híreket a weboldaladra? Katt ide a részletekért!
close(fájl_változó);
Eszközök
Ezen eszközök elésére általában szövegfájlokat használunk, de bizonyos esetekben a típus nélküli fájl hatékonyabb megoldást biztosít.
Az összerendelés a következőképpen módosul: az assign parancsban a fájl_változó mellé nem egy fájlnevet kell írni, hanem a fenti táblázatban ismertetett eszközök valamelyikét.
Minden egyéb műveletet, típustól függően az előbb ismertetett módon kell végrehajtani.
Hibakezelés
Ha a fájl nyitásakor valamilyen hiba lép fel (pl.: nem létező fájlt nyitunk meg olvasásra), akkor a programunk Runtime error xxx at yyyy:zzzz hibaüzenettel leáll. A Pascal lehetővé teszi, hogy az Input/Output (I/O) műveleteknél fellépő hibákat a programon belül dolgozzuk fel. A kritikus programrészletetet a és direktívák közé helyezve az IOResult függveny visszaadott értékéből következtethetünk a hiba megjelenésére.
Az IOResult függvény értékéből mindig csak a legutolsó I/O művelet lefolyására következtethetünk. A függvény hívása törli a belső állapotjelző értékét, így ha többször szeretnénk azt lekérdezni, akkor egy saját, Integer típusú változóban kell eltárolnunk az első híváskor visszaadott értéket. Az IOResult 0 értékkel tér vissza, ha a legutolsó I/O művelet sikeres volt, és valamilyen run-time hiba kódjával, ha nem.
A legkritikusabb pont a fájl megnyitása. Tehát itt egy programrészlet ami bemutattja, hogyan ellenőrizhetjük műveletünk sikerességét:
Találat: 4902