Mimic File.Move, jeśli miejsce docelowe już istnieje
Z dokumentacjiFile.Move
:
Zauważ, że jeśli spróbujesz zastąpić plik, przenosząc plik o tej samej nazwie do tego katalogu, otrzymasz wyjątek IOException. Nie można użyć metody Move do zastąpienia istniejącego pliku.
Krótko mówiąc, nie można nadpisywaćMove
, aby ułatwić nadpisywanie w Move, naśladuję zachowanie, wykonującFile.Copy
po którym następuje aFile.Delete
. Coś jak:
<code>if (File.Exists(dstFileName)) { // System.IO.File.Move cannot be used to overwrite existing files, so we're going // to simulate that behavior with a Copy & Delete. File.Copy(procContext.FileName, dstFileName); File.Delete(procContext.FileName); } else File.Move(procContext.FileName, dstFileName); </code>
Moje pytanie brzmi: czy są jakieś sytuacje, przed którymi muszę się zabezpieczyć, a które mogłyby doprowadzić do usunięcia pliku źródłowego bez jego pomyślnego skopiowania?
Moje zrozumienie po przeczytaniu dokumentacji jest następująceFile.Copy
nie zwraca niczego, co powinno wywołać wyjątek w każdym przypadku, że się nie uda. Czy ktoś napotkał sytuacje, w których nie jest to prawdą?