odpowiadanie prostym pomnożeniem krzyżowym jest okropnie protekcjonalne. Myślę, że jestem pewien, że już o tym wiedział. W ten sposób nieustannie zgadujemy, co dzieje się w naszej głowie.
Problem z paskami postępu operacji na plikach polega na tym, że są one poprawne tylko dla jednolitych danych, więc jeśli skopiujesz 100 plików, które mają ten sam rozmiar, a dysk nie robi nic innego, szacowany postęp będzie zauważalny, ale co jeśli pierwszy 99 plików to małe pliki TXT, a ostatni to duży plik wideo? Postęp będzie WOLNY.
Problem ten nasila się, gdy nie zarządzasz plikami w jednym folderze, ale w wielu podfolderach. Załóżmy, że masz 5 podfolderów i chcesz je usunąć (wtedy rozmiar nie ma większego znaczenia), pierwsze 4 foldery zawierają tylko mniej niż 10 plików, więc zanim operacja dotrze do 5. folderu, o którym myśli, że chodzi o 80% zrobione, a boom 5. folder zawiera 5000 plików, a twoje postępy wracają do 1%
WinXP próbował obejść ten problem, licząc wcześniej liczbę plików, co oznaczało, że kiedy folder nie był indeksowany w systemie Windows, w zależności od liczby plików, XP tak naprawdę nie zaczął operacji przez pierwsze 20 sekund (czas potrzebny na to hrabia), co doprowadziło wszystkich do wściekłości.
Więc chociaż nie mam specjalnej wiedzy na temat tego, jak to robi Windows (ale co tam jeszcze oprócz liczenia plików i bajtów), mam nadzieję, że zilustruję, dlaczego jest wadliwy i dlaczego nigdy nie będzie idealny.
Najlepsze, co możesz zrobić, to nie polegać wyłącznie na liczbie plików LUB liczbie bajtów, ale zbudować średnią z tych dwóch.
Lub jeśli chcesz się bardziej zwariować, system operacyjny może uruchomić bazę danych na temat tego, jak długo te operacje trwały w przeszłości na twoim komputerze i uwzględnić to w równaniu.
Ostatnia myśl: jeśli ktoś pomyśli o systemie plików, który poinformowałby system operacyjny o rozmiarze każdego folderu, bez jego wcześniejszego obliczenia, uzyskałbyś przynajmniej poprawne oszacowanie postępu podczas usuwania całych folderów, a nie tylko ich części.