Directory.Move方法的使用限制
今天在写一个小工具的时候,发现在移动文件夹的时候出现了下面的错误:
System.IO.IOException:“Source and destination path must have identical roots. Move will not work across volumes.”
查了一下,说是Directory.Move这个方法不支持跨盘符移动。
于是写测试代码试了一下。
// 可以正常移动文件
File.Move(@"E:\test.txt", @"D:\test.txt");
// 可以正常移动文件夹
Directory.Move(@"E:\xxx\test", @"E:\test");
// 移动失败,会报异常
Directory.Move(@"E:\xxx\test2", @"D:\test2");
测试结果是果然不行。
相当于如果要跨盘符移动文件夹,需要自己手动去另一个盘符先创建文件夹,然后把文件夹里的所有文件都复制到新的文件夹中,再把旧的文件夹删除。
如果包含多层文件夹的话,需要递归操作,每一层都得这样,先创建新文件夹,然后再把文件夹下的文件复制过去。
我非常惊讶自己居然对Directory.Move方法的这个限制没有印象。难道我之前从来就没有跨盘符移动文件夹的需求吗?
惭愧!
分类:
C#开发 / 文件相关
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
2018-12-14 Ubuntu设置MySQL允许远程访问