Avatar
David Jančík [sczdavos]:

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
Čím více času dostaneš, tím méně ho máš.
Avatar
Kit
Redaktor
Avatar
Odpovídá na David Jančík [sczdavos]
Kit:

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ů.
Avatar
Odpovídá na Kit
David Jančík [sczdavos]:

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
Čím více času dostaneš, tím méně ho máš.
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.