Самый эффективный способ переименовать изображение

1

Есть ли более эффективный способ переименования файла в Windows, кроме:

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

У меня есть миллионы, и использование вышеуказанного займет почти неделю.

  • 0
    Есть ли шаблон для переименования файла?
  • 0
    «У меня их миллионы, и использование вышеописанного займет почти неделю» - это означает, что одно переименование займет ок. 0,0672 секунды (на основе 1 недели и 9 миллионов файлов)
Показать ещё 2 комментария
Теги:
image
rename
file-move

1 ответ

1
Лучший ответ

File.Move - это тонкая оболочка API Win32. Я сомневаюсь, что есть более быстрый способ, не связанный непосредственно с изменением необработанных данных на уровне блоков на диске. Я думаю, вам не повезло, что вы искали более быстрый путь от управляемого кода.

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();
    }
}
  • 0
    Справедливо. Благодарю.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню