文件未正确重定位c#

时间:2013-11-20 16:34:02

标签: c# winforms checkbox

我的程序设置根据复选框输入重命名和存储文件。我为我的模板使用了另一个stackoverflow帖子。唯一的问题是当我尝试为子文件夹设置时,它从不将它放在正确的文件夹中。我有一个带有两个子文件夹的标签文件夹,名为L-Labels和B-Labels。用户检查它是哪种标签类型,文件被重命名并放在相应的子文件夹中。当我使用断点时,我的变量得到了正确的值,所以我看不出有什么问题我提供了我的变量和代码来重新定位文件。是什么原因导致它不能放在我的子文件夹中?

Varibales:

string oldPath = lblBrowseName.Text;
string newpathB = @"C:\Users\Public\Labels\B_Labels";
string newpathL = @"C:\Users\Public\Labels\L_Labels";

方法:

if (rChkBoxBizerba.Checked == true)
{
string newFileName = rtxtBoxNewVersion.Text;
FileInfo f1 = new FileInfo(oldPath);
if (f1.Exists)
{
if (!Directory.Exists(newpathB))
{
Directory.CreateDirectory(newpathB);
}
f1.CopyTo(string.Format("{0}{1}{2}", newpathB, newFileName, f1.Extension));
if (System.IO.File.Exists(lblBrowseName.Text))
System.IO.File.Delete(lblBrowseName.Text);
}

1 个答案:

答案 0 :(得分:2)

我想说这就是问题所在:

f1.CopyTo(string.Format("{0}{1}{2}", newpathB, newFileName, f1.Extension));

您声明了路径,但它没有尾随目录分隔符,因此当您组合所有部分时,如上所述,实际结果无效。

你真的应该使用Path.Combine()将部分路径组合在一起,这会使用正确的目录分隔符并进行额外的检查。

尝试这样的事情:

// Build actual filename
string filename = String.Format("{0}{1}",newFileName, f1.Extension));

// Now build the full path (directory + filename)
string full_path = Path.Combine(newpathB,filename);

// Copy file
f1.CopyTo(full_path);