【发布时间】:2013-09-03 05:17:21
【问题描述】:
正如标题所说,System.IO 的Directory 类中有一个Directory.Move 但没有Directory.Copy 方法。有什么原因吗?
更新:
对我来说,复制和移动操作几乎相同,唯一的区别是移动操作先复制然后删除目标。错误处理对于移动和复制一样复杂。那么,如果一个实施了,为什么另一个没有呢?
更新 2:
这是来自 mmclean 评论的引述:
Directory.Move 但不会移动,而是重命名。就这样 “destination”路径是指向目录的完整路径,而不是 而不是“移动到”的位置,移动到不同的驱动器是 不可能。
所以我知道 move 实际上做了一个 rename 操作(仅更改和输入文件分配表)。但是移动和复制命令在合并目标中存在的项目时都有相同的问题(覆盖/保留两者)。因此,复制操作唯一增加的复杂性是它必须物理复制文件。但这仍然不能解释不实施它的决定。更重要的是,当复制命令在 VB.NET 中实现时,MSDN here 上有一个非常简单的复制操作实现。
【问题讨论】:
-
这个 Eric Lippert 的回答也应该回答你的问题:stackoverflow.com/a/2806990/1163867
-
@MarcinJuraszek - EL 正在谈论 C# 功能,这个问题是关于 BCL。两种截然不同的东西。但是会应用类似的逻辑。
-
在 .NET 4.5 中有一项革命性的工作围绕 here
-
Move 不会进行复制和删除。它做了一个动作。完全不一样。 (除非你在不同的卷上移动,然后你会得到一个例外!)移动一个目录只需要更新文件分配表中的目录条目
-
你想知道为什么吗?或者你真的想复制一份吗?