2014-02-26 52 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