Tomasz bla Fortuna
5/22/2007 5:47:00 PM
Dnia 22 May 2007 10:30:08 -0700
AdamW <adam.wieckowski@gmail.com> napisal(a):
> Witam,
>
> mam pytanie zupelnie teoretycznie i niezwiazane z rzadnym konkretnym
> jezykiem programowania. Jak usunac dane z pliku? I nie chodzi mi o
> metode wczytania najpierw tych danych z pliku których nie chce usuwac,
> zapisania ich do pliku, potem wczytania tych które chce usunac i nie
> zapisania ich i potem wczytania tych które chce zachowac i zapisania
> ich tez. Jest jakas funkcja dedykowana do tego? Bo ta wyzej
> (powszechnie stosowana zreszta) metoda wydaje mi sie strasznie
> tandetna, cos lepszego by mi sie przydalo.
Tzn. rozumiem, ze wiesz jak wyglada zapis danych na dysku? Ciagle dane,
bajt po bajcie. "Usuniecie" jednego wymaga przesuniecia wszystkich za
nimi.
Nawet jesli znajdziesz funkcje, to ona bedzie dzialala dokladnie tak
samo. Mozliwe, ze jakies dedykowane systemy plików beda umozliwialy
dosc szybkie wykonanie takiej operacji ale nie jest to jakies codzienne.
Mozesz tak zaprojektowac format w pliku, ze dane oznaczasz jako
"usuniete", a potem w trakcie jakis dalszych przeksztalcen zapiszesz
ten kawalek pliku innymi danymi. Maly filesystem w jednym pliku.
Mozna tez niby skakac po pliku... wycinajac kawalek ze srodka
zapisujesz go danymi, które znajduja sie np. 10 bajtów w przód. Ale
musisz skoczyc naprzód, odczytac, wrócic, zapisac i tak dalej az
dojedziesz do konca pliku. Poza tym jesli w tej operacji przeszkodzi Ci
brak pradu - dane ida sie pasc (jezeli w ogóle byly flushniete na dysk
przez warstwe systemu plików).
Podsumowujac: Nie ma automagicznej metody. (A przynajmniej bardzo sie
zdziwie jak ktos jakas znajdzie. ;d)
> Pozdrawiam,
> AW
>
--
Tomasz bla Fortuna
jid: bla(at)af.gliwice.pl
pgp: 0x90746E79 @ pgp.mit.edu