使用变量创建路径(将文件夹和内容移动到新文件夹)

时间:2018-11-13 19:53:00

标签: c# winforms

环顾四周,发现了很多与此相关的内容,但是没有一个使用变量来形成路径。我需要做的是单击按钮时将文件夹,子文件夹和文件移动到新路径。到目前为止,我发现没有任何结果。目前,我没有任何文件或文件夹移动过。我尝试的当前解决方案来自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。信息检索变得毫无问题,并且路径正确。如果您能帮助我,将不胜感激。谢谢。

1 个答案:

答案 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);
}