W dniu 2016-08-27 o 13:00, Piotr B. [pb2004] pisze:
PM <pm@xx.xx> wrote:
Czyli że M$ też spartolił własne kopiowanie? :P
Pozatym to nie powinno zależeć od użycia api i tylko system sam powinien
wiedzieć że zapis pliku w całości ma lecieć w wolne miejsce.
Nic nie pisałem o kopiowaniu. Skąd w ogóle taki pomysł? Pisałem o
sytuacji gdy tworzony jest plik 0 bajtów i następnie do tego pliku
dopisywane są dane. W takim wypadku jeśli programista nie ustawi na
O tworzeniu pliku w kawałkach to logiczne, że system nie wie ile będzie
miał wynikowy plik. Ale przy kopiowaniu przez explorator też nie wrzuca
pliku w cały wolny blok, tylko wali od początku dysku, czyli że to nie
api daje w dupę, a jeśli tak to sami nie umieją korzystać z tego co
napisali. I tylko o taką sytuację mi chodzi
Algorytm alokacji bloków w sterowniku ntfs zapewniam Cię że jest dużo
bardziej skomplikowany niż proste:
if(znana_wielkość_pliku == true)
{
znajdź_wolne_miesce(potrzebnaliczbaklastrów);
zapiszplik();
}
else
{
while(pozostałodozapisania > 0)
{
znajdź_dowolne_wolne_miejsce();
zapisano = zapisz_część_pliku();
pozostałodozapisania-=zapisano;
}
}
Dlatego chociaż Eksplorator wykorzystuje odpowiednie api to nie zawsze
plik docelowy jest zapisany w jednym fragmencie chociaż często jest.
fajnie, ale nie tak. Nie ubijaj C. Oni są teorytamii :)
--
Artur
|