我可以这样简单地使用文件,例如:
public static void MoveAllFilesFromDesktopToJDrive()
{
DirectoryInfo di = new DirectoryInfo(@"C:\Users\Tafe\Desktop\");
DirectoryInfo Jdrive = new DirectoryInfo(@"J:\");
foreach (FileInfo fi in di.GetFiles())
{
if (Path.GetFileName(fi.FullName) != "desktop.ini")
{
fi.MoveTo(Jdrive.FullName + Path.GetFileName(fi.FullName));
}
}
}
但是在目录上尝试相同的操作告诉我,我不能移动卷上的目录。好的,所以这就是我试过的:
public static void MoveAllDirsFromDeskTopToJDrive()
{
DirectoryInfo di = new DirectoryInfo(@"C:\Users\Tafe\Desktop\");
DirectoryInfo Jdrive = new DirectoryInfo(@"J:\");
foreach (DirectoryInfo dirs in di.GetDirectories())
{
Directory.CreateDirectory(Jdrive + Path.GetFileName(dirs.FullName));
}
}
这会复制文件的名称,但不会复制内容,我只会移动内容,就像我使用MoveAllFilesFromDesktopToJDrive()
方法一样,但目录包含子目录和子目录等,所以我无法想象出来。我知道关于递归的TINY位,但还不足以尝试这个。还有,难道不是那么难吗? API中必须有更好的东西来促进这一点吗?如果没有,那么完成此方法MoveAllFilesFromDesktopToJDrive()
的任何帮助都将成为救星!
答案 0 :(得分:0)
尝试在代码中的某处循环:
string fileName = "test.txt";
string sourcePath = @"C:\Users\Public\TestFolder";
string targetPath = @"C:\Users\Public\TestFolder\SubDir";
// Use Path class to manipulate file and directory paths.
string sourceFile = System.IO.Path.Combine(sourcePath, fileName);
string destFile = System.IO.Path.Combine(targetPath, fileName);
// To copy a folder's contents to a new location:
// Create a new target folder, if necessary.
if (!System.IO.Directory.Exists(targetPath))
{
System.IO.Directory.CreateDirectory(targetPath);
}
System.IO.File.Copy(sourceFile, destFile, true);
有关详细信息,请访问此链接:http://msdn.microsoft.com/en-us/library/cc148994.aspx