2013-09-06 9 views
7

Mam około 100 000 plików w katalogu. Muszę przenieść wszystkie te pliki do innego katalogu. Są dwa sposoby na zrobienie tego.Co to jest bardziej kosztowna "zmiana nazwy" lub "link i odłączenie" w C

  1. rename(oldfile, newfile)

  2. link(oldfile, newfile)
    unlink(oldfile)

Które podejście jest lepsze? Czy są jakieś inne lepsze rozwiązania?

+0

'zmień nazwę (oldfile, newfile)' = jedno połączenie –

+3

Zastąpiłem "lacs" 100 000, zakładając, że było to odniesienie do http://en.wikipedia.org/wiki/Lakh, które tak naprawdę nie jest używane w języku angielskim jako z tego co wiem. Nie jestem rodowitym mówcą po angielsku, więc mogę się mylić; tak czy inaczej, myślę, że liczba jest łatwiejsza do zrozumienia. – unwind

+0

@unwind, dziękuję Miałem trochę problemów ze zrozumieniem tego zdania :) – Geoffroy

Odpowiedz

9

Krótka odpowiedź:

Pierwsze rozwiązanie.


Używanie rename wywołać tylko wykonać jeden telefon systemowy, a to może być dalej optymalizowane przez system i/lub wykonania. Wyraźnie określasz także, co zamierzasz zrobić, co jest ważniejsze niż poszukiwanie najwyższej wydajności w jednym punkcie programu.

Roztwór link/unlink działa również, ale nie jest jasne, co zamierzasz zrobić. Ponadto, w jaki sposób zarządzać link na wielu systemach plików? Link nie jest nawet możliwy w przypadku niektórych systemów plików lub systemów operacyjnych.

+2

+1 dla "wyraźnego określenia, co zamierzasz zrobić". –

4

Użyj rename().

Nie wszystkie systemy plików obsługują wiele linków do plików i nie można w ogóle utworzyć wielu łączy do katalogu. rename(), z drugiej strony, zawsze działa.