环顾四周,发现了很多与此相关的内容,但是没有一个使用变量来形成路径。我需要做的是单击按钮时将文件夹,子文件夹和文件移动到新路径。到目前为止,我发现没有任何结果。目前,我没有任何文件或文件夹移动过。我尝试的当前解决方案来自MSDN,并试图使其适应我的代码。如果您可以更正代码并向我展示示例,那就太好了。我不知道我在做什么错。这是代码:
private void CopyPartsToProject()
{
string sourcePath = (pathToQuotes + "/" + client_name.Text + "/" + quote_id.Text);
string targetPath = (pathToClient + "/" + client_name.Text + "/" + project_number.Text);
string sourceFile = sourcePath + "/" + "*.*";
string destinationFile = targetPath + "/" + "*.*";
System.IO.File.Move(sourceFile, destinationFile);
System.IO.Directory.Move(sourcePath, targetPath);
}
使用另一种方法从MySQL数据库(从用户输入)检索pathToQuotes和pathToClient。信息检索变得毫无问题,并且路径正确。如果您能帮助我,将不胜感激。谢谢。
答案 0 :(得分:0)
您需要一种递归方法来实现移动目录,包括所有文件和子目录:
private void moveDirectory(string sourcePath ,string targetPath)
{
if (!System.IO.Directory.Exists(targetPath))
{
System.IO.Directory.CreateDirectory(targetPath);
}
String[] files = Directory.GetFiles(sourcePath);
String[] directories = Directory.GetDirectories(sourcePath);
foreach (string f in files)
{
System.IO.File.Copy(f, Path.Combine(targetPath,Path.GetFileName(f)), true);
}
foreach(string d in directories)
{
// recursive call
moveDirectory(Path.Combine(sourcePath, Path.GetFileName(d)), Path.Combine(targetPath, Path.GetFileName(d)));
}
}
然后用法如下:
private void CopyPartsToProject()
{
string sourcePath = (pathToQuotes + "/" + client_name.Text + "/" + quote_id.Text);
string targetPath = (pathToClient + "/" + client_name.Text + "/" + project_number.Text);
moveDirectory(sourcePath, targetPath);
}