在.net目录类有一个方法来移动,删除目录。但它没有复制目录及其内容的方法。 我们必须使用一个循环的每个文件和子目录复制,因为这How to: Copy Directories为什么.net没有方法来复制整个目录
我想知道什么是理性/原因behing不具有复制方法。
在.net目录类有一个方法来移动,删除目录。但它没有复制目录及其内容的方法。 我们必须使用一个循环的每个文件和子目录复制,因为这How to: Copy Directories为什么.net没有方法来复制整个目录
我想知道什么是理性/原因behing不具有复制方法。
这是因为Windows API MoveFile
及相关函数也可用于移动目录,但CopyFile
及其相关函数不能与目录一起使用。
更基本的原因是,移动文件或目录只是重命名它;它实际上并不需要物理移动磁盘上的文件(或文件)数据。当你重命名一个目录时,它所包含的文件会自动选择新的路径“通过引用”,就像它一样。没有必要对每个文件的条目进行操作。
这并不是说.NET不必复制整个目录的方法(因为存在一个在VB.NET),它是C#不必复制整个目录的方法。
鉴于此功能在其他.NET语言的支持,似乎不太可能有其没有在C#中的技术或哲学的原因,我们可以回到属于零假设"by default features don't exist"(如oftexplained由埃里克利珀)。
但是任何存在于VB.NET中的方法存在于C#中,只要您引用正确的程序集。真正的问题是*目录类*没有复制整个目录的方法,这是OP要求的问题。 – phoog
@phoog - 当然,你可以在C#中使用VB.NET方法。您对Windows API中可用函数的回答很有意思,并且可能会导致实现此功能的成本,但它仍然只是导致功能无法使用的一部分原因,而我只是试图指出OP朝更大的方向发展。 – Ergwun
当然 - 并指出VB.NET方法是讨论的一个有益补充,正如“默认功能不存在”的想法一样。值得补充的是,VB来自一种哲学,即语言允许程序员更关注更高层次的问题;这解释了在VB库中提供函数的动机(实际上,也就是'My'命名空间本身)。 – phoog
http://stackoverflow.com/questions/58744/best-way-to-copy-the-entire-contents-of-a-directory-in-c-sharp – Habib