2015-09-25 4 views
1

Эй, в последнее время я пытаюсь переместить файлы из одной папки в другую, но ошибки продолжают возникать. Обе папки loacation и назначения созданы, местоположение имеет несколько файлов .txtИсключение при перемещении файлов

Вот что я пробовал:

string path = @"C:\TESTmove\path"; 
string path2 = @"C:\TESTmove\destiny"; 

if (Directory.Exists (path)) 
{ 
    foreach (string filename in Directory.GetFiles(path)) 
    { 
     File.Move (filename, path2); 
     //Console.WriteLine (filename); 
    } 
} 
else 
{ 
    Console.WriteLine("Wrong place"); 
} 

, и я получаю эту ошибку:

Cannot create a file when that file already exists.

+0

Какая часть сообщения об ошибке вы не понимаете? – SLaks

+0

Вы проверили, что файл не существует в пункте назначения, прежде чем перемещать его? – Ric

+2

Второй параметр в 'File.Move' должен быть полным путем, включая имя файла, а не только целевой каталог. –

ответ

0

You 'создав тот же файл с именем «destiny» в пути к каталогу «C: \ TESTmove». (Это не то, что вы хотите, но это в основном то, что будет делать ваш код.)

Вместо этого укажите имя файла при перемещении файла в новое место.

File.Move(filename, Path.Combine(path2, Path.GetFileName(filename))); 
+0

«destiny» - это папка назначения –

+0

@WalterWhite Я понял .. Я просто заявляю, что ваш код будет делать. Вы должны передать это имя файла _destination_, когда вы его перемещаете. –

+0

хорошо Directory.GetFiles() дает весь путь к файлу, а не только имя файла, поэтому Path.Combine thingy не работает. Я думаю, что так: P –

0

Ваш код неправильно, вы говорите:

string path2 = @"C:\TESTmove\destiny"; 
string filename = @"C:\TESTmove\path\test1.txt"; 

File.Move (filename, path2); 

path2 должен содержать путь и имя файла.

например. Это должно быть, как так

string sourceFile = @"C:\TESTmove\path\whatever.txt"; 
string destinationFile = @"C:\TESTmove\whatever.txt"; 

System.IO.File.Move(sourceFile, destinationFile); 

Там нет волшебства, File.Move должен знать, какой файл вы движетесь к тому, что файл (а не только местоположение).

+0

Directory.GetFiles() предоставляет весь путь к файлам, например.при печати «filename» вывод: C: \ TESTmove \ path \ test1.txt –

Смежные вопросы