namespace FileMove2
{
class Program
{
static void Main(string[] args)
{
Console.Write("Which folder would you like to move files from?");
string sourcePath = Console.ReadLine();
Console.Write("Which folder would you like to move files to?");
string targetPath = Console.ReadLine();
MoveDirectory(sourcePath, targetPath);
}
static void MoveDirectory(string sourcePath, string targetPath)
{
if (!System.IO.Directory.Exists(targetPath))
{
System.IO.Directory.CreateDirectory(targetPath);
}
if (System.IO.Directory.Exists(sourcePath))
{
string[] files = System.IO.Directory.GetFiles(sourcePath, "*.*", System.IO.SearchOption.AllDirectories);
foreach (string f in files)
{
System.IO.File.Move(f, targetPath);
}
}
}
}
}
问问题
488 次
2 回答
1
你应该这样做:
System.IO.Directory.Move(@"C:\Users\Public\public\test\", @"C:\Users\Public\private");
您的 sourcePath 是第一个参数,而 targetPath 是第二个相应的参数。
参考资料: 微软 MSDN
于 2014-03-20T19:53:24.670 回答
1
问题是File.Move
需要两个文件名,而您提供的是文件名和目录。
您可以通过创建适当的目标文件名来修复您的代码:
string targetFile = Path.Combine(targetPath, Path.GetFileName(f));
File.Move(f, targetFile);
(正如 João Pinho 所说,Directory.Move
可能会做你想做的事,但上面解释了为什么你会得到一个错误,如果你的实际情况更复杂,这会有所帮助。)
于 2014-03-20T19:54:20.357 回答