Własne kopiowanie - anulowanie

0

Zaimplementowałem własne kopiowanie plików przy pomocy:

        [DllImport("kernel32.dll", SetLastError = true, CharSet = CharSet.Auto)]
        [return: MarshalAs(UnmanagedType.Bool)]
        static extern unsafe bool CopyFileEx(string lpExistingFileName, string lpNewFileName, CopyProgressRoutine lpProgressRoutine, IntPtr lpData, Boolean* pbCancel, CopyFileFlags dwCopyFlags); 

Wszystko działa ładnie, nie wiem jednak jak [dobrze] rozwiązać jeden problem. Gdy ktoś anuluje kopiowanie pliku, a kopiowany plik miał zastąpić jakiś stary, chcę przywrócić ten stary. Jak to zrobić dobrze? Stary gdzieś schować? Jak, tak aby nie zajmowało dużo czasu odzyskanie tego pliku?

0

najpierw zmień staremu nazwę i jak cofnie to zmień z powrotem a jak nie cofnie to usuń stary. Ma to jednak tą wadę, że potrzebujesz więcej miejsca bo stary usuwasz dopiero na końcu

0

Dzięki, myślałem o tym. Pozostaje jeszcze problem nazwy, trzeba tak dobrać aby się nie powtórzyło. Ma ktoś jakieś inne sugestie? Jak to się dzieje w windowsie?

0

Najprościej - doklej staremu jakiegoś GUIDa na końcu nazwy.

0

GUID - tak prawdopodobnie zrobię.
Właśnie sprawdziłem... windows w takim wypadku utraci plik.

0
somekind napisał(a)

Najprościej - doklej staremu jakiegoś GUIDa na końcu nazwy.

Losową nazwę pliku możesz wygenerować także tak:

System.IO.Path.GetRandomFileName();

Pozdrawiam
Łukasz Gawron

1 użytkowników online, w tym zalogowanych: 0, gości: 1