假设我有目录 1 和目录 2,每个目录中都可以包含文件或子目录。到目前为止,如果我想将“Directory 2”重命名为“Directory 3”,我可以运行:
Directory.Move("path\Directory 2", "path\Directory 3");
这工作正常 - 重命名目录,该目录中的所有子目录和文件都可以使用新名称正常工作,无需处理副本。
但是,如果我尝试这样做:
Directory.Move("path\Directory 2", "path\Directory 1");
我收到错误,因为目录 1 已存在。在这种情况下,如果目录 2 无法重命名为目录 1,则目录 2 中的所有内容(文件和子目录)都应移至目录 1 中。最简单的方法是什么?我应该有一个 if 文件存在、一个 foreach 来移动所有子目录、一个 foreach 来移动所有文件吗?有没有更简单的方法来重载 .Move 函数来移动文件,而不管是否存在错误?
最佳答案
不,因为 MOVE 在文件系统级别工作,有效地重命名文件夹,或将文件夹“指针”移动到另一个位置。前者是父目录相同的情况,后者是父目录不同的情况。
因此,为了回答您的直接问题,您必须遍历每个子目录,以防目标存在并且其中包含某些内容。如果没有,您可以随时删除它并进行 MOVE-ing。
关于C# 重命名目录,如果目录已存在则复制所有内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11054913/