2015-01-11 2 views
0

Я работаю над проектом, в котором я хочу, чтобы каталог был сгенерирован в соответствии со значением текстового поля, и я хочу скопировать файл в созданную папку ... До сих пор я мог создать каталог и скопировать файл, но в созданную папку ....Скопируйте файл в созданный каталог

try 
{ 
    string id = textBox4.Text.Trim(); 
    // Directory.CreateDirectory("C:\\Users\\prashan\\Desktop\\"+id); 
    string source = null;     

    OpenFileDialog ofd = new OpenFileDialog(); 

    if (ofd.ShowDialog()==System.Windows.Forms.DialogResult.OK) 
    { 
     source = ofd.FileName; 
     MessageBox.Show(source); 
    } 

    string File_name = Path.GetFileName(source); 

    string destination = "C:\\Users\\prashan\\Desktop\\" + 
     System.IO.Directory.CreateDirectory(id) + File_name; 

    System.IO.File.Copy(source, destination); 
    MessageBox.Show("Done...."); 
} 
catch (Exception ex) 
{ 
    MessageBox.Show(ex.StackTrace); 
} 
+0

Итак, в чем проблема? Я не вижу в вашем посте актуального вопроса ..? – quetzalcoatl

ответ

1

у вас есть следующий код:

string destination = "C:\\Users\\prashan\\Desktop\\" 
    + System.IO.Directory.CreateDirectory(id) + File_name; 

Вы конкатенации результат CreateDirectory() в вашем имени файла назначения, что неверно. Вместо этого, вы можете разделить это на две операции, например:

System.IO.Directory.CreateDirectory("C:\\Users\\prashan\\Desktop\\" + id); 
string destination = "C:\\Users\\prashan\\Desktop\\" + id + "\\" + File_name; 

Это не самый чистый способ сделать это, используя Path.Combine() будет лучше, но я хотел бы изменить свой код, как мало насколько это возможно.

+1

Но я думаю, что это полный путь, а не одно имя каталога, не так ли? Возможно, что 'destination = Path.Combine (System.IO.Directory.CreateDirectory (« C: \\ Users \\ prashan \\ Desktop \\ "+ id), имя_файла)' был бы лучшим примером. – Alan

+0

Да, это было бы лучше. Но я сомневаюсь, что это был полный путь, поскольку MSDN говорит «исходный путь», а в приведенном выше коде «id = textbox.Text». Я чувствую короткое имя, а не полный путь, но все это просто догадывается. Моя точка в первом комментарии заключалась в том, что результат CreateDirectory() является конкатенативным для пути, поэтому я думаю, что вы можете сделать «неправильный» немного более мягким. – quetzalcoatl

0

Небольшие изменения в вашем коде. Путь назначения изменен, чтобы сделать его допустимым.

try 
     { 
      string id = textBox4.Text.Trim(); 
      Directory.CreateDirectory("C:\\Users\\prashan\\Desktop\\"+id); 
      string source = null; 
      OpenFileDialog ofd = new OpenFileDialog(); 

      if (ofd.ShowDialog() == System.Windows.Forms.DialogResult.OK) 
      { 
       source = ofd.FileName; 
       MessageBox.Show(source); 

      } 

      string File_name = Path.GetFileName(source); 

      string destination = "C:\\Users\\prashan\\Desktop\\" + id +"\\"+ File_name; 


      System.IO.File.Copy(source, destination); 
      MessageBox.Show("Done...."); 

     } 
     catch (Exception ex) 
     { 
      MessageBox.Show(ex.StackTrace); 
     } 
+0

Thanks.Description добавлен. –

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