Pascal-ban e feladat hogy oldható meg egyszerűen a TFileStream használatával? (én csak simán tudom)
Ha például látrehozok egy fájlt, beleírok 2 karaktert, bezárom, majd ismét megnyitom és a két karakter közé szeretnék írni egy harmadikat, de nem úgy hogy felülíroma karaktert ami ott van, hanem egy harmadik karakter kerül a 2 közé a fájlba...
program filesproba;
var
f : file of char;
ch : char;
begin
assign(f, 'probafile');
rewrite(f);
ch := 'A';
Write(f,ch);
Write(f,ch);
close(f);
end.
Találtam neked még valamit, hátha ezt jobban megérted, a hangsúly jobbára az utolsó mondaton van:
"A szabad helyek nyilvántartása (ami a fentiek szerint alapvetően az állományszervező réteg egyik fontos feladata) többféleképpen is megvalósítható: Bittérképes ábrázolással Ebben az esetben a háttértár (lemez) minden egyes logikai blokkjához egy bit tárolja, hogy az adott blokk szabad-e. Ezen a bitek segítségével foglaltsági vektor állítható elő, ami a lemez egy erre fenntartott helyén tárolódik. Ezzel a tárolási formával az egymás melletti szabad blokkok kiválasztása egyszerű (de sajnos csak ez). A hatékonyságot és a gyorsaságot növelendő, célszerű az egész vektort az operatív tárba letükrözni. A szabad blokkok láncolt listájával [49-es dia] Ebben az esetben minden egyes szabad blokk utolsó néhány bájtját kiemeljük a klasszikus adattárolási funkcióból,>>> ugyanis ezen a néhány bájton a következő szabad blokk sorszámát tároljuk. <<<"
" mert FAT táblákról keztél el beszélni, holott FAT tábla csak egy van. A "második" FAT az általad citált képen csupán az első másolata"
Igen, tehát 2 van.. ezzel én is tisztában vagyok... nem akartam részletezni, hogy az másolat, gondoltam egyértelmű.
Szerintem nézd ezt át mégegyszer. Utoljára írom le, hogy nem az adat byteok után (és nem is közvetlenül előtte) van a mutató a következő cluster-re FAT filerendszer esetén.
A 2041 bytos file 512 byteos cluster méret esetén 4 clustert foglal el. Nem pedig 5-öt ahogy a te módszereddel történne.
"Utoljára írom le, hogy nem az adat byteok után"
OMG!
Na még egyszer, hátha leesik végre:
"Ebben az esetben minden egyes szabad blokk UTOLSÓ NÉHÁNY bájtját KIEMELJÜK a klasszikus ADATTÁROLÁSI funkcióból, ugyanis EZEN A NÉHÁNY BÁJTON a KÖVETKEZŐ szabad blokk SORSZÁMÁT TÁROLJUK."
forrás: [link]
Állományrendszerek. Oktatói anyag.
--
"Nem pedig 5-öt ahogy a te módszereddel történne."
Banyek, te tényleg azt hiszed, hogy az író-olvasó fej kiolvassa egy cluster indexét, ráseekel a clusterre, elolvassa azt, továbbítja a rendszer felé, majd visszapozicionál, újra kiolvas egyet a FAT táblából, megint rákeres, kiolvassa és ez így megy egészen a file végéig? Mennyi fölösleges fejmozgás lenne ebben ember?
Hát nem így van. Úgy van, hogy a cluster kiolvasásánál már meg is kapja az 512 byte utolsó 2 byte-ján a köv. cluster indexét és így tovább.
"Előadás_08
Ebben az esetben (a szabad területek nyilvántartásánál már megismert módon) a tárolás szekvenciális és mindig a sor elejéről indul, oly módon, hogy maga a blokk tartalmazza a következő blokk számát, ami hasznos területet vesz el a blokkból. A nyilvántartáshoz a fájlok első és utolsó blokkjának sorszámát elegendő tárolni.
Előnyei:
Ebben az esetben külső tördelődés nem lép fel. Az adatszerkezet dinamikus, a fájlméret, azaz a felhasznált blokkok száma tetszőlegesen (egyéb, a fájlrendszer szabta korlátok ismeretében) növelhető.
Hátrányai:
A szekvenciális tárolásból fakadóan egy fájl eléréséhez a teljes listát lépésről lépésre végig kell járni. A blokkok tartalma két részre van osztva (adat illetve a következő blokk címe), ennek adminisztrálása erőforrást igényel."
B*szki, olvasd már tovább azt a bekezdést amit bemásolsz:
[54-es dia] Fájl allokációs tábla (File Allocation Table / FAT) Ez a módszer a láncolt tárolás olyan megvalósítása, ahol a fájlok adatait és a láncelemeket (a következő blokk sorszámát) elkülönítve tároljuk.
Kezd már nevetséges lenni az egész.
"Kezd már nevetséges lenni az egész."
Leginkább te és az értetlenkedésed, ahogy próbálod megmagyarázni másnak egy amúgy is helytelen vélekedésedet.
"A láncolt lista legegyszerűbb formája az egyszeresen láncolt lista, amelyben cellánként egy hivatkozás található. Ez a hivatkozás a lista következő elemére mutat, speciálisan az utolsó elem esetén nullértékű vagy egy kitüntetett üres listára hivatkozik.
Ha egy egyszeresen láncolt listára akarunk hivatkozni (például paraméterátadáskor), elegendő megadnunk az első elemének címét. "
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!