2016-12-25 4 views
2

Я пытаюсь переместить файл с рабочего стола в каталог под названием «Текстовые файлы», но каждый раз, когда я пытаюсь это сделать, он дает мне эту ошибку.Как перенести файл в каталог и не заменять файл?

Дополнительная информация: Файл цели «C: \ Users \ Developer \ Documents \ Textfiles» - это каталог, а не файл.

Теперь я знаю, что с помощью

File.Copy(fileName, targetPath); 

Было бы неправильно, и это то, что я использую сейчас, она принимает два параметра, первый из которых файл yopu хотите скопировать, и второй из которых является файл заменяется? Исправьте меня, если я ошибаюсь во втором параметре.

В любом случае, я пробовал System.IO.Directory.Move(fileName, destFile);, но это в значительной степени дало мне ту же ошибку.

Два параметра очень просты, всего две строки, состоящие из путей.

string fileName = filePath.ToString(); 
string targetPath = @"C:\Users\Developer\Documents\Textfiles"; 

Что будет правильным способом передать fileName в targetPath?

ответ

2

Вы должны указать имя файла назначения.

string fileOnly = System.IO.Path.GetFileName(fileName); 
string targetPath = System.IO.Path.Combine(@"C:\Users\Developer\Documents\Textfiles", fileOnly); 
System.IO.File.Move(fileName, targetPath); 
+0

Что делать, если я не хочу жестко кодировать путь? Не могу сделать что-то вроде .. string path = Environment.GetFolderPath (Environment.SpecialFolder.Desktop); – JonnyKhanas

2

https://msdn.microsoft.com/en-us/library/c6cfw35a(v=vs.110).aspx См

документации:

destFileName 
Type: System.String 
The name of the destination file. This cannot be a directory or an existing file. 

Вы должны добавить новое имя файла в каталог назначения.

Вы можете получить имя файла с:

result = Path.GetFileName(fileName); 

, таким образом, в вашем случае:

string targetPath = @"C:\Users\Developer\Documents\Textfiles\" + Path.GetFileName(fileName); 
+0

Что делать, если я не хочу жестко кодировать путь? Не могу сделать что-то вроде .. string path = Environment.GetFolderPath (Environment.SpecialFolder.Desktop); – JonnyKhanas

+0

Да, если путь - это имя файла, а не имя папки. –

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

  • Нет связанных вопросов^_^