Využij akce až 80% zdarma při nákupu e-learningu. Více informací .
BF summer
Avatar
David Jančík
Tým ITnetwork
Avatar
David Jančík:19.2.2013 15:53

Nejde použít Directory.Move(Source, Dest); protože vyskočí Exception Cannot create a file when that file already exists.?

Řešením může být například následující

string SourcePath;
string DestinationPath;


//Now Create all of the directories
foreach (string dirPath in Directory.GetDirectories(SourcePath, "*",
        SearchOption.AllDirectories))
        Directory.CreateDirectory(dirPath.Replace(SourcePath, DestinationPath));

//Copy all the files
foreach (string newPath in Directory.GetFiles(SourcePath, "*.*",
        SearchOption.AllDirectories))
        File.Move(newPath, newPath.Replace(SourcePath, DestinationPath));

Directory.Delete(SourcePath, true);
Editováno 19.2.2013 16:39
Odpovědět
19.2.2013 15:53
Zapomeň, že je to nemožné a udělej to ;)
Avatar
Kit
Redaktor
Avatar
Odpovídá na David Jančík
Kit:19.2.2013 16:09

Jednak podmínka Directory.Exists(SourcePath) je nejspíš zbytečná, druhak tuto výjimku to asi vyhodí jen v případě, že cílový adresář už existuje. A za třetí netuším, proč zdrojový adresář mažeš, když jsi ho přesunul a tedy už neexistuje.

Nahoru Odpovědět
19.2.2013 16:09
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Tento výukový obsah pomáhají rozvíjet následující firmy, které dost možná hledají právě tebe!
Avatar
David Jančík
Tým ITnetwork
Avatar
Odpovídá na Kit
David Jančík:19.2.2013 16:38

Jo podmínka tu je zbytečná, tu sme si tam dal pro svoje potřeby.
Přesunul jsem pouze soubory v něm obsažené. Adresáře zůstanou. Takže je smažu. Šlo mi spíše o to, že se to dost často řeší složitě a to zadání patternu *.* a projítí všech adresářů je nejjednodušší způsob. Proč to vyhazuje tu vyjímku a nejde občas použít Directory.Move to nevím. Duplicitní soubory jsem tam neměl, cílový adresář vytvořený nebyl a ani nic co by mělo vadit mě nenapadalo. Proto jsme to musel udělat takto.

Nahoru Odpovědět
19.2.2013 16:38
Zapomeň, že je to nemožné a udělej to ;)
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 3 zpráv z 3.