如何将文件从默认目录移动到另一个目录?

时间:2014-12-06 15:42:01

标签: c# file-io

听起来很简单,但事实并非如此。我正在尝试移动一个我这样做的文件:

string newFileName = string.Format("{0}-{1}-{2}-t{3:00}-{4:00}.txt", 2013, 10, 5, 05, 06);

它看起来像:2013-10-5-05-06.txt,从默认目录(..\bin\debug\2013-10-5-05-06.txt)到另一个目录(c:\Users\Public\Folder)。我想保留文件的名称,以便将具有几乎相同名称(小差异)的其他文件移动到同一文件夹。我尝试了几种方法(Path.Combine(), string.Concat()..)但没有成功。

2 个答案:

答案 0 :(得分:0)

只需使用此代码段

即可
string CurrentFileNameAndPath; //the path the file you want to move
string newPath; //only the new the folderPath
System.IO.FileInfo FileYouWantToMove = new System.IO.FileInfo(CurrentFileNameAndPath);
string NewFileNameAndPath = newPath + "\\" + FileYouWantToMove.Name; //remember that using fullname will get the folder and filename
FileYouWantToMove.MoveTo(NewFileNameAndPath);

所以让我们以此为例,我有这个文件C:/Dir1/file1.txt,我想将其目录更改为C:/ Dir2 / right?那就像这样

string CurrentFileNameAndPath = @"C:/Dir1/file1.txt";
string newPath = @"C:/Dir2/";
System.IO.FileInfo FileYouWantToMove = new System.IO.FileInfo(CurrentFileNameAndPath);
string NewFileNameAndPath = newPath + "\\" + FileYouWantToMove.Name;
FileYouWantToMove.MoveTo(NewFileNameAndPath);

结果将是C:/Dir1/file1.txt中的该文件现在将在C:/Dir2/file1.txt中,它已被移动并维护相同的文件名和扩展名

答案 1 :(得分:0)

这样的事实上是非常微不足道的

var srcFile = "..\bin\debug\2013-10-5-05-06.txt";
var destFolder = Path.GetDirectoryName(Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory));
var destFile = Path.Combine(destFolder, Path.GetFileName(srcFile));
File.Move(srcFile, destFile);

请注意,Move会引发各种例外,例如IOException / UnauthorizedAccessException等等,因此在适当情况下处理这些内容是明智的。