File 如何在.NET中重命名文件?
使用File 如何在.NET中重命名文件?,file,rename,.net,File,Rename,.net,使用System.IO.File或其他.NET类,重命名文件的最佳方法是什么 我希望能够重命名本地驱动器或网络位置上的文件 如果使用System.IO.File,Move是最好的方法吗? 选择 System.IO.File.Move 您可以使用System.IO.file.Move重命名文件,如下所示: var sourcePath = @"C:\folder\oldname.txt"; var destinationPath = @"C:\folder\newname.txt"; File.M
System.IO.File
或其他.NET
类,重命名文件的最佳方法是什么
我希望能够重命名本地驱动器或网络位置上的文件
如果使用System.IO.File
,Move
是最好的方法吗?选择 System.IO.File.Move 您可以使用
System.IO.file.Move
重命名文件,如下所示:
var sourcePath = @"C:\folder\oldname.txt";
var destinationPath = @"C:\folder\newname.txt";
File.Move(sourcePath, destinationPath);
您可能有兴趣保留相同的位置,只需更改文件名。确保可以做到:
var sourcePath = @"C:\folder\oldname.txt";
var newName = "newname.txt";
var directory = Path.GetDirectoryName(sourcePath);
var destinationPath = Path.Combine(directory, newName);
File.Move(sourcePath, destinationPath);
System.IO.FileInfo.MoveTo 您还可以使用
System.IO.FileInfo.MoveTo
:
var sourcePath = @"C:\folder\oldname.txt";
var destinationPath = @"C:\folder\newname.txt";
FileInfo info = new FileInfo(sourcePath);
info.MoveTo(destinationPath);
注意:您还可以如上所示构建目标路径
“手动移动” 显然,您可以随时打开现有文件,创建一个具有所需名称的新文件。。。将竞赛从旧的复制到新的,最后删除旧的。如果您具有写访问权限,这将起作用,但不会保留日期和安全信息(文件所有者等) 您可以在的公认解决方案中看到一个例子
注释 注1:其他备选方案包括:
Microsoft.VisualBasic.FileSystem.Rename
和Microsoft.VisualBasic.FileIO.FileSystem.Rename文件
Microsoft.VisualBasic.FileSystem.Rename
和System.IO.File.Move
都是等效的,它们从kernel32
执行参数检查、权限检查和错误处理
关于Microsoft.VisualBasic.FileIO.FileSystem.RenameFile
,它将在给定完整路径和新名称的情况下重命名同一文件夹中的文件(类似于我上面介绍的构建目标路径),然后从kernel32
返回到MoveFile
以类似的方式,System.IO.FileInfo.MoveTo
将从kernel32
调用MoveFile
注2:还应注意,您无法从Mono中找到Microsoft.VisualBasic
。这意味着System.IO.File.Move
和System.IO.FileInfo.MoveTo
是唯一的可移植选项
这都是文件。 如上所述,所有这些方法都将从
kernel32
回退到MoveFile
MoveFile
适用于系统上任何已安装的驱动器(甚至网络驱动器),但不应使用它从一个卷移动到另一个卷。在这种情况下,需要将文件复制到目标并删除旧文件
最佳选择 由于
Microsoft.VisualBasic.FileSystem.Rename
和Microsoft.VisualBasic.FileIO.FileSystem.RenameFile
可能不会在其他操作系统中使用,因为它们不是由Mono移植的,所以我将放弃它们
因此,我们只剩下System.IO.File.Move
和System.IO.FileInfo.MoveTo
。在这些System.IO.File.Move
之间,开销较小,因为它不必维护FileInfo
对象的状态。除此之外,它们也会起同样的作用。。。因此,如果您已经在使用FileInfo
请使用System.IO.FileInfo.MoveTo
否则System.IO.File.Move
因此,System.IO.File.Move
是在.NET中重命名文件的最佳选项(他们没有给我们一个古怪的API)
庆祝一下 一篇关于你将要做什么的文章是。这怎么可能不是堆栈溢出启动5年后的重复呢?@PeterMortensen最接近匹配:。虽然在本例中,CJ7在阅读时知道该方法(
System.IO.File
),但问题是是否有更好的选项可以跨不同的驱动器和网络位置工作。我还没有找到明确的声明,如果提到的API在这些情况下工作(我的直觉是它是这样的)。。。但值得一提的是,在.NET中重命名和移动文件avalialbe的一些替代方案可能在链接问题中未提及。起点:其他: