两种常见的重命名方法MoveTo 和 Move,它们之间有什么区别呢?代码如下:
System.IO.FileInfo file = new System.IO.FileInfo(@"d:\old.txt");
f.MoveTo(@"d:\new.txt");
以上的代码和下面代码实现的功能一样
System.IO.File.Move(@"d:\old.txt", @"d:\new.txt");
不同之处就是一个是FileInfo实例下的方法,一个是File 的静态方法。它们的使用场合不一样,例如我需要遍历文件夹下文件单个单个的来过虑和移动,这是一种动态的方法。而使用File.Move时需要提前知道文件名称,单从性能上来说能用File当然最好。一个适合动态便利一个适合直接静态使用。
区别说明
- File.Move(源, 目标):静态方法,适合一次性移动,无需创建对象。
- FileInfo.MoveTo(目标):实例方法,若已持有 FileInfo(如遍历目录时),可直接调用,避免重复拼接路径。
- 目标文件已存在时两者都会抛 IOException;.NET Core 3.0 起可用 File.Move(src, dest, overwrite: true) 覆盖。
- 本质相同:同卷移动即改名,跨卷则为复制后删除。
结论:批处理遍历用 FileInfo.MoveTo 更自然,单次操作直接 File.Move 更简洁。