2014-02-26 62 views
0

問題背景:複製和粘貼文件programmaticaly

我需要將文件從一個文件夾位置複製和粘貼(移動)到另一個。

問題:

System.IOFile.Copy方法需要兩個參數是已知的文件位置。我只知道一個文件路徑位置 - 在這種情況下localDevPathlocalQAPath是我想要移動複製文件的文件夾路徑。

string localDevPath = @"C:\Folder1\testFile.cs"; 

string localQaPath = @"C:\Folder2\"; 

File.Copy(localDevPath, localQaPath); 

誰能告訴我如何去執行這一「複製和粘貼」的方法,我想實現。

+1

['File.Move'](http://msdn.microsoft.com/en-us/library/system.io.file.move% 28V = vs.110%29.aspx)? –

+0

你的代碼有什麼問題?你總是知道兩個文件位置,因爲如果你不知道它在哪裏,你就不能複製文件,並且你不能將它複製到你不知道的地方。如果「問題」是您的QaPath只是一個文件夾,則標準是將新文件命名爲與前一個文件相同。只需獲得最後一個'/' – Tobberoth

回答

1

假設這些是用戶提供的路徑和你不能簡單地包括在所述第二路徑中的文件名,那麼就需要從localDevPath提取最後的路徑元素,然後將其添加到localQaPath。你可以用Path.GetFilename來做到這一點。

+0

後面的子字符串我可以簡單地將'TestFile.cs'附加到'localQaPath',並且即使它在'Folder2'中當前沒有激活,它將被覆蓋並添加? – user1352057

+0

是的,這實際上是最簡單的解決方案。不過,我不明白你的意思。如果它不存在,它如何被覆蓋?至於如果它確實存在會發生什麼,我會檢查'File.Copy'文檔。 – dandan78

0

我在這裏猜測的問題是,文件名是可變的,在這種情況下,你可以做這樣的事情,從localDevPath的完整路徑解壓文件名:上的文件

string localDevPath = @"C:\Folder1\testFile.cs"; 
string localQaPath = @"C:\Folder2\"; 
string[] tokens = localDevPath.Split(@"\"); 
localQaPath += tokens[tokens.Length-1]; 

File.Copy(localDevPath, localQaPath); 

文檔。複製在MSDN。有一個接受布爾值的重載,如果存在命名衝突,則允許覆蓋。

2
string localDevPath = @"C:\Folder1\testFile.cs"; 
string localQaPath = @"C:\Folder2\"; 
FileInfo fi = new FileInfo(localDevPath); 
fi.MoveTo(Path.Combine(localQaPath, fi.Name)); 
0

如果你想要做的是將文件從一個位置移動到另一個位置,你正在尋找的方法是MoveTo。它是FileInfo類的一個方法。在MSDN Library中有一個非常完整的例子:FileInfo.MoveTo Example