Directory.Move 不起作用(文件已存在)
我有主文件夹:
c:\test
其中有 2 个文件夹:电影和照片。
照片有三个文件夹,其中的文件具有相同的结构:人物、动物和建筑物。我正在尝试这段代码:
Directory.Move(@"c:\test\Movies", @"c:\test\Test");
我得到异常:
File already exists
I've got main folder:
c:\test
And there I have 2 folders: Movies and Photos.
Photos has three folders with files with the same structure: People, Animals and Buildings. I'm trying this code:
Directory.Move(@"c:\test\Movies", @"c:\test\Test");
I get exception:
File already exists
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
此方法将递归地移动文件夹的内容并覆盖现有文件。
您应该添加一些异常处理。
编辑:
该方法是用while循环和堆栈而不是递归来实现的。
更新:
这是一个更简单的版本,递归地使用
Directory.EnumerateFiles
而不是使用堆栈。这仅适用于 .net 4 或更高版本,对于早期版本的 .net,请将
Directory.EnumerateFiles
更改为Directory.GetFiles
。This method will move content of a folder recursively and overwrite existing files.
You should add some exception handling.
Edit:
This method is implemented with a while loop and a stack instead of recursion.
Update:
This is a simpler version with the use of
Directory.EnumerateFiles
recursively instead of using a stack.This will only work with .net 4 or later, to us it with an earlier version of .net change
Directory.EnumerateFiles
toDirectory.GetFiles
.目标目录不应已存在 - Directory.Move 方法会为您创建目标目录。
The destination directory should not already exist - the Directory.Move method creates the destination directory for you.
在将新内容复制到目标文件夹之前删除目标文件夹是否安全?
Is it safe for you to delete the destination folder before copying new contents to it?
Directory.Move
可能失败的最常见的 2 个原因是:这是我的简单说明第二个问题的解决方案(覆盖):
The most common 2 reasons why
Directory.Move
could fail are, if:Here is my simple solution for the second problem (overwrite):
您可以直接使用 move 方法。
该文件夹将被删除并将其复制到测试文件夹中。
You can use move method directly.
The folder will be deleted and copied it into Test Folder.