Przycinac plik można funkcją trunciate. Ale ja ma taki otóż problem. Funkcja triuncate ucina plik TYLKO ok kursora , w prawą stronę (pokazuje obrazowo) . Ja chcialbym uciac plik na poczatku tak aby to co bylo za nim zostalo >> (sproboje z obrazowac>) |||||||||||||||||||||| < to jest plik, ja chce wyciac czesc niebieska, a czesc czerwona ma zostac. jak to mozna zrobic zeby bylo szybko i krotko (czas)? wiadomo oczywiscie mozna odczytac czesc za plikiem potem utworzyc nowy plik skopiowac ta czesc. ale gdy ten jeden plik zajmuje np. 1GB? takie przenoszenie trwalo by bardzo dlugo, a juz gdzyby wykorzystac pamiec to i tak raczej niewystarczyla by. :) czy jest jakis inny sposob? :)
nie ma innego sposobu
ew. możesz jeszcze grzebiąc w FATcie znaleźć dokładny adres klastra, w którym jest Twój nowy początek pliku i ustawić w FATcie początek pliku na ten klaster. Dodatkowo trzeba by oznaczyć usunięte klasty jako nieużywane i zaktualizować rozmiar pliku. Z tym, że jeśli początek niwego pliku wypadnie w środku klastra to może być problem.
Oczywiście tak mniej więcej działa FAT natomiast jak NTFS to już sobie musisz sam znaleźć bo nigdy się nie wgłębiałem
W takim razie stosujesz niewygodny format pliku. Może po prostu przy danych na początku pliku zaznacz, że ten obszar nie jest wykorzystywany i nowe dane mogą go nadpisać, a od czasu do czasu zdefragmentuj ten plik. Dokładnie tak robi na przykład Outlook Express ze swoim "kompaktowaniem wiadomości".
... albo dystrybutor pamięci z którym porozumiewamy się przez getmem(), new() i freemem(), dispose().
Bo mark() i release() jakoś wychodzą z mody.
A czy pliku tego używa ktoś jeszcze? Czy tylko twój program?
Robisz to raz na jutro, czy może 1000 razy dziennie?
Czy może to tylko ?akademicka ciekawość??
A swoją drogą, to ciekawe czy jest jakiś SYSOP który pozwala ?strzyc? nie tylko od końca?
Wiecie otóż z jednej strony to moja ciekawość :P. Robie program, i do jednej z wielu funkcji jest mi to potrzebne. swoja droga to problemu by nie bylo gdyby kazdy mial pliki najwyzej 10 MB :P. no cóż ale jak sie zdarzy, że bedzie 1GB i moj program mialby kopiowac i wklejac ... to by strasznie duzo czasu zajelo :). mozna bylo by wykorzystac pamieć no ale czy kazdy ma jej duzo? . i jescze jedno gdyby program robil to raz to juz by moglo byc z tym wycinaniem i przestawianiem (..). tylko ze to moze byc wykorzystywanie 100 lub 10000 razy (kto wie ile). No i nie jestem jeszcze studentem ;-) .
Szczawik napisał(a)
Dokładnie tak robi na przykład Outlook Express ze swoim "kompaktowaniem wiadomości".
dodam tylko, że też tak robi The Bat!, 40tude Dialog (to z programów, które używam i które składują większe ilości danych we własnych formatach) i każda normalna baza danych