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方法的这个限制没有印象。难道我之前从来就没有跨盘符移动文件夹的需求吗?
惭愧!

posted @   wzwyc  阅读(318)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
历史上的今天:
2018-12-14 Ubuntu设置MySQL允许远程访问
点击右上角即可分享
微信分享提示