2014-09-27 222 views
0

我已经写了一个拷贝功能,可以将文件从一个目录复制到另一个目录,但不断收到“不支持给定路径格式”的异常。这里是我的功能代码:将文件从一个目录复制到另一个目录

private void Copy(string letter) 
{ 
    string sourceDir = (txtPath.ToString()); 
    string targetDir = letter; 
    foreach (var file in Directory.GetFiles(sourceDir)) 
     File.Copy(file, Path.Combine(targetDir, Path.GetFileName(file)), true); 
} 
+3

字母和txtPath的值是什么? – Mairaj 2014-09-27 13:05:34

+0

在哪条线上?你调试了你的代码吗? – 2014-09-27 13:09:59

+0

您可以在路径中使用无效字符。 txtPath是否包含“:”? – 2014-09-27 13:11:17

回答

2

要引用文本框的内容,您使用TextBox.Text财产

private void Copy(string letter) 
{ 
    string sourceDir = txtPath.Text.Trim(); 
    string targetDir = letter; 

    // Check if source and target exists.... 
    if(Directory.Exists(sourceDir) && Directory.Exists(targetDir)) 
    { 
     foreach (var file in Directory.GetFiles(sourceDir)) 
      File.Copy(file, Path.Combine(targetDir, Path.GetFileName(file)), true); 
    } 
    else 
    { 
     MessageBox.Show("Source=" + sourceDir + " or Target: " + targetDir + " doesn't exist"): 
    } 
} 

直接调用ToString()方法上TextBox的实例返回类的名字其次是文本属性(类似于“System.Windows.Forms.TextBox,Text:文本框的内容”),显然这不是有效路径

它是您的评论不清楚可变字母的内容。所以你也应该确定变量targetDir指向一个实际的有效路径。 (单个驱动器号C D或E无效路径)

+0

ty v much ..我忘了一些基本的东西,因为疲惫。但是这个功能只是复制该目录中的文件而不是文件夹...有什么帮助? – Bilal 2014-09-27 13:37:27

+1

如果您想复制子文件夹的内容,则需要递归调用。可能有很多例子。第一个发现是这http://www.rhyous.com/2011/07/25/how-to-copy-a-directory-recursively-in-cshar/这可以被认为是一个经典的upvotes http: //stackoverflow.com/questions/58744/best-way-to-copy-the-entire-contents-of-a-directory-in-c-sharp – Steve 2014-09-27 13:43:34

+0

再次thnx – Bilal 2014-09-27 13:51:47

相关问题