Kezdőoldal » Számítástechnika » Programozás » Pascal-ban e feladat hogy...

Pascal-ban e feladat hogy oldható meg egyszerűen a TFileStream használatával? (én csak simán tudom)

Figyelt kérdés

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.



2018. dec. 12. 18:34
1 2 3 4 5
 11/49 anonim ***** válasza:

"Én csak annyit tudok erről, hogy "láncolt listában" történik az adatok tárolása a merevlemezen."


Ez pontosan így van. Ezt írtam le részletesebben a korábbi hsz-ben. Az aktuális cluster végén van a bejegyzés a köv. clusterre, annak a végén a következőre és így tovább a file végéig.

Ezt azért kell így, hogy az adattároló maximálisan ki legyen használva, tehát ha egy kisebb file törölve lesz róla, akkor az ott felszabadult helyet is ki lehessen használni. A file-ok egy idő után akár 10-20 vagy még több darabban is helyet foglalhatnak az adattárolón, mármint 1-1 file. És ezek a darabok különféle hosszúságúak lehetnek.

2018. dec. 13. 17:01
Hasznos számodra ez a válasz?
 12/49 A kérdező kommentje:

Köszönöm a választ.

Nem tudom esetlegesen: a fentebb leírt TStream eltérhet-e a TFileStream-tól valamiben.

2018. dec. 13. 17:06
 13/49 anonim ***** válasza:

Nem tudom mit értesz különböző használaton, de a filestream alapvetően arra jó, hogy egy file-t abba beolvashatsz és azon műveleteket végezhetsz, akár egy fizikai file-lal, tehát soronként, vagy blokkonként olvashatod (readln, blockread) írhatod (writeln, blockwrite), csak mindez villámgyors lesz a HDD-n levő file írásához, olvasásához képest.



[link]

2018. dec. 13. 17:06
Hasznos számodra ez a válasz?
 14/49 A kérdező kommentje:
Azt értettem rajta, hogy milyen műveleteket tudok végezni adott fájlon, mit tesz lehetővé. Köszönöm hogy leírtad.
2018. dec. 13. 17:20
 15/49 anonim ***** válasza:

"Az aktuális cluster végén van a bejegyzés a köv. clusterre, annak a végén a következőre és így tovább a file végéig."


Ez nem igaz.


"Ezt azért kell így, hogy az adattároló maximálisan ki legyen használva, tehát ha egy kisebb file törölve lesz róla, akkor az ott felszabadult helyet is ki lehessen használni."


Na és honnan tudná, hogy hol van a szabad hely, ha törölsz egy filet? Csak nem végigolvassa a merevlemezt hogy mutat-e valami oda? Mondj még hasonlókat.


Nem így néz ki a FAT (mint fájlrendszer).


Láncolt lista persze van, csak nem úgy ahogy te írod.


Ez kb az első kép a netről FAT file systemre keresve:

[link]


Láthatod, hogy a FAT filerendszerben van egy vagy több FAT, ami annyi bejegyzest tartalmaz, ahány cluster van a fájlrendszerben. Ez tartalmazza, hogy az egyes cluster után melyik a következő. Szóval elég a FAT-ben követni a mutatókat, nem kell hozzá beolvasni a Data Areaban lévő clustereket (ami a file tényleges tartalmát tartalmazza)


Illetve nyilván a file és könyvtár bejegyzéseket is tárolni kell valahol.


Részemről befejeztem, csak kérlek ne higgyétek el, hogy végig kell olvasni egy filet ahhoz hogy a végére ugorjunk.

2018. dec. 13. 18:35
Hasznos számodra ez a válasz?
 16/49 anonim ***** válasza:

15: Fejezd már be ember!

Sötét vagy mint az éjszaka! Hülye vagy még ahhoz is, amire hivatkozol!

2018. dec. 13. 18:57
Hasznos számodra ez a válasz?
 17/49 anonim ***** válasza:
0%

"Na és honnan tudná, hogy hol van a szabad hely, ha törölsz egy filet? Csak nem végigolvassa a merevlemezt hogy mutat-e valami oda? Mondj még hasonlókat."


Onnan gyükér, hogy a FAT táblában megvan a kezdő cluster bejegyzés meg a file mérete. Ezért is volt, hogy a törölt file-okat vissza lehetett állítani mert azoknak csak a kezdő karaktere törlődött a FAT táblából. Azt visszaírva ott volt a file, ha az általa foglalt clustereket még nem írta felül egy másik.


Velem meg ne vitatkozz, mert te utolsó nulla vagy hozzám képest. Egy órával ezelőtt még fogalmad sem volt a filerendszerekről, de engem akarsz kioktatni, aki már 18 éve ezzel foglalkozik?

2018. dec. 13. 19:02
Hasznos számodra ez a válasz?
 18/49 anonim ***** válasza:

Magyarul, egyetemi tankönyvből:


kepfeltoltes.e_u/view.php?filename=457fat.gif

2018. dec. 13. 19:14
Hasznos számodra ez a válasz?
 19/49 anonim ***** válasza:

bobcat_rendex: Hiába írsz nekem privát üzenetben nyomdafestéket nem tűrő üzeneteket, ettől nem lesz igazad.


Az általad linkelt kép ebből származik (Illetve ugyanaz a szerzője):

[link]


Fentebb olvashatod benne:

"A FAT tábla tartalmazza azokat az adatokat, hogy egy fájl tartalmának

végigolvasásához melyik klaszter után melyik klasztert kell olvasni."


Tehát nem az adatok után van a következő cluster-re a mutató, azaz mégegyszer leírom: NEM KELL beolvasni a file tartalmát ahhoz hogy tudd hol van a file vége, csak a FAT-et kell olvasni hozzá.


Amúgy 18 éve ha nem is munkahelyen, de már én is láttam filerendszert közelebbről. Értem, hogy te ezzel foglalkozol, de akkor sincs igazad.


Persze bevallom, hogy a mai nap tudtam meg új (vagy már rég elfelejtett) dolgokat, de azért olyan alapokkal tisztában voltam, hogy tudtam első ránézésre, hogy hülyeséget írsz.


De most komolyan, nehéz bevallani, hogy téves az az állítás, hogy végig kell olvasni egy nagy filet ahhoz hogy a végére ugorj? Csak próbáld már ki.. Nem kell hozzá programot írni, nyisd meg pl. Total Commander nézőkéjével és görgesd le a scrollbart az aljára.

Vagy azt hiszed, hogy tényleg ilyen gyors a háttértárad?

2018. dec. 13. 19:42
Hasznos számodra ez a válasz?
 20/49 anonim ***** válasza:

""A FAT tábla tartalmazza azokat az adatokat, hogy egy fájl tartalmának

végigolvasásához melyik klaszter után melyik klasztert kell olvasni."


Tehát nem az adatok után van a következő cluster-re a mutató,"


Hát de. Attól, hoy te képtelen vagy jól értelmezni a leírozttakat is, az ábrát is és a saját általad citált ábrát is, arról én nem tehetek.


Mit ír? Ezt:


"tartalmazza azokat az adatokat, hogy egy fájl tartalmának

végigolvasásához >> melyik klaszter után melyik klasztert << kell olvasni."


Ez pontosan azt írja amit én állítok. Tehát hogy melyik cluster után melyik cluster kell olvasni. De ha ez neked magas, akkor ott az ábra, akár a tied, akár az enyém, amely megmutat egy-egy FAT bejegyzést ami mindkét esetben EGY azaz CSAK a kezdő cluster címét tartalmazza. A további cluster címét az aktuális cluster tartalmazza.

Ott van a te példádban is:


File neve:


"tyui.jpg"


mérete: 1400 byte.


Start cluster: 2.


Jobb oldalon pedig maga az adattároló a láncolt listával:


2 mutat a 3-ra (2:3)

3 mutat a 4-re (3:4)

a 4. pedig a file vége, mivel 1400 byte kisebb mint 3 x (512-2).


Az én ábrémon is ott van egy komplett FAT bejegyyzés ami 30 byte és az utolsó előtti 2 byte-os rekesz tartalmazza a kezdő cluster címét. Az utolsó 4 byte pedig a file méretét.


Az ábra alján pedig szintén ott vannak a clusterek, amelyek egymásra mutatnak.



---


"Persze bevallom, hogy a mai nap tudtam meg új"


Ez előttem nem volt kétséges, már csak amiatt sem, 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, biztonsági okokból. Aki ismeri a FAT fileredszert, az ezt egészen biztosan tudja.


DE!

Arra már önerőből is rájöhettél volna, hogy amit te képzelsz (1-1 file-hoz az összes clustert mellékelni), az nem volna túl praktikus, mert így a fat bejegyzések rövidek, de a te verziódban végtelenül hosszúak lennének, gyakorlatilag minden új file-hoz hozzá kellene rendelni a teljes cluster mennyiséget ami csak kb. 500 file tárolását tenné lehetővé egy HDD-n, vagy dinamikusan megoldani, ami egy-egy file módosításánál, törlésénél szintén aránytalanul hosszú ideig terhelné a FAT adminisztrációt.

2018. dec. 13. 20:32
Hasznos számodra ez a válasz?
1 2 3 4 5

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

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!