2013-11-20 48 views
0

我有我的程序設置根據複選框輸入重命名和存儲文件。我爲我的模板使用了另一個stackoverflow帖子。唯一的問題是,當我試圖設置它的子文件夾,它從來沒有把它放在正確的文件夾。我有一個帶有兩個子文件夾的標籤文件夾,稱爲L-Labels和B-Labels。用戶檢查它是哪種標籤類型,文件被重命名並放置在相應的子文件夾中。當我使用斷點時,我的變量得到正確的值,所以我沒有看到我提供了變量和代碼來重定位文件的錯誤。是什麼導致這不會把它放在我的子文件夾?文件無法正確重定位c#

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); 
} 

回答

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); 
+0

所以f1.Copyto的instad使用Path.Combine()? –

+0

不,您仍然使用'CopyTo',但目標文件名目前不正確。 – Lloyd

+0

現在得到你了!感謝您對我將要嘗試的澄清。 –