将文件夹中的所有文件和子目录移动到同一文件夹的另一个子目录下。

5
我想将所有文件和包含文件的子目录移动到同一文件夹的另一个子目录中。
例如,我有一个名为abcd的文件夹,其中包含一个文件aa和子文件夹bb、cc、dd。因此,我想在与abcd相同的文件夹中创建另一个子文件夹abcd\backup,并将aa、bb、cc、dd即所有文件和文件夹移动到备份文件夹中。

我在这里找不到任何问题。 - Shaharyar
你能分享一下你尝试过的吗? - Thangamani Palanisamy
2个回答

2
这将非常简单。
Directory.Move("SourcePath", "DestinationPath");

处理源文件夹中的所有目录,并使用forloop或foreach为每个目录使用上述语法移动到目标文件夹。


SA并不要求移动文件,他想备份,因此复制是一个好方法。 - Sagotharan
这对于网络路径是行不通的:\server\folder\。它会抛出一个异常,说找不到路径部分。 - anindis
@anindis,Server.MapPath() 能解决这个问题吗? - tony09uk
这并没有回答问题,这将移动并删除源目录,而问题要求将目录中的所有文件和文件夹移动到子文件夹中(保持结构)。 - Ryan Leach

1
        string source = @"d:\test";
        string dest = @"d:\move\";

        DirectoryInfo dirInfo = new DirectoryInfo(dest);
        if (dirInfo.Exists == false)
            Directory.CreateDirectory(dest);


        DirectoryInfo dir = new DirectoryInfo(source);
        DirectoryInfo[] dirs = dir.GetDirectories();


        string[] files = Directory.GetFiles(source);
        Int32 i = dirs.Count() + files.Count();
        //   for progress bar

        foreach (string file in files)
        {
            try
            {
                string name = Path.GetFileName(file);
                string destFile = Path.Combine(dest, name);
                // skip some file
                if (name != "file") File.Move(file, destFile);
            }
            catch
            {

            }
        }

        foreach (DirectoryInfo subdir in dirs)
        {
            string temppath = Path.Combine(dest, subdir.Name);
            if (!Directory.Exists(temppath))
                try
                {
                    Directory.Move(subdir.FullName, temppath);
                }
                catch
                {

                }
        }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接