2015-10-13 2 views
1

Я пытаюсь программно копировать файлы с рабочего стола на USB-диск. Однако, при попытке запустить этот код, я адресность об ошибке, говорящее, что часть пути не может быть найдена:Доступ к USB-накопителям с «компьютера»

if (dr == DialogResult.Yes) 
{ 
    string selected = comboBox1.GetItemText(comboBox1.SelectedItem); 

    string filePath = Environment.GetFolderPath(Environment.SpecialFolder.Desktop); 
    string filefolder = @"\UpgradeFiles"; 

    string fileLocation = filePath + filefolder; 

    if (!Directory.Exists(fileLocation)) 
    { 
     Directory.CreateDirectory(fileLocation); 
    } 

    else if (Directory.Exists(fileLocation)) 
    { 
     DirectoryInfo di = new DirectoryInfo(fileLocation); 

     FileInfo[] fileList = di.GetFiles(); 
     foreach (FileInfo file in fileList) 
     { 
      string DrivePath = Environment.GetFolderPath(
       Environment.SpecialFolder.MyComputer); 
      string CopyToDrive = comboBox1.Text; 

      file.CopyTo(DrivePath + CopyToDrive, false); 
     } 
    } 
} 

Поля со списка содержит выбранную букву диска. Подхожу ли я к этому неправильно, пытаясь добавить «computer \ driveletter»?

+0

Неужели для этого нет времени? –

+0

@CallumBradbury Очень хорошо. – Sean

+0

Я так и думал: во-первых, не используйте Path + Path при слиянии ... путей, используйте Path.Combine, что уменьшит вероятность ошибок и, возможно, это будет проблема здесь –

ответ

2

Ваш File.CopyTo (DrivePath + CopyToDrive, ложь) должно быть:

File.CopyTo(CopyToDrive + File.Name, false); 

, но с небольшим количеством синтаксического сахара, как с помощью Path.Combine или String.Format вместо того, чтобы просто "+".

Проблема в том, что File.CopyTo требует как каталога, так и имени файла конечного местоположения, когда вы просто предоставляете каталог. Это можно увидеть в документации по вызову метода здесь: https://msdn.microsoft.com/en-us/library/f0e105zt(v=vs.110).aspx

+0

Это работает отлично. Огромное спасибо. – Sean

+0

Нет проблем, я думаю, в конце концов, у меня было время для этого –

+0

Так как это в моем цикле foreach, он скопирует все файлы из этого места, правильно? – Sean

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