重命名图像的最有效方法

时间:2014-07-14 03:43:31

标签: c# image rename file-move

是否有更有效的方法在Windows中重命名文件而不是:

System.IO.File.Move(sourceFileName, destFileName);  

我有数百万,使用上述内容将花费近一周时间。

1 个答案:

答案 0 :(得分:1)

File.Move是Win32 API的一个瘦包装器。我怀疑有没有更快的方法直接修改磁盘上块级别的原始数据。我认为你很难找到更快的托管代码方式。

File.Move反编译源:

public static void Move(string sourceFileName, string destFileName)
{
    if ((sourceFileName == null) || (destFileName == null))
    {
        throw new ArgumentNullException((sourceFileName == null) ? "sourceFileName" : "destFileName", Environment.GetResourceString("ArgumentNull_FileName"));
    }
    if ((sourceFileName.Length == 0) || (destFileName.Length == 0))
    {
        throw new ArgumentException(Environment.GetResourceString("Argument_EmptyFileName"), (sourceFileName.Length == 0) ? "sourceFileName" : "destFileName");
    }
    string fullPathInternal = Path.GetFullPathInternal(sourceFileName);
    new FileIOPermission(FileIOPermissionAccess.Write | FileIOPermissionAccess.Read, new string[] { fullPathInternal }, false, false).Demand();
    string dst = Path.GetFullPathInternal(destFileName);
    new FileIOPermission(FileIOPermissionAccess.Write, new string[] { dst }, false, false).Demand();
    if (!InternalExists(fullPathInternal))
    {
        __Error.WinIOError(2, fullPathInternal);
    }
    if (!Win32Native.MoveFile(fullPathInternal, dst))
    {
        __Error.WinIOError();
    }
}