Функция MoveFileW (winbase.h)

Перемещает существующий файл или каталог, включая его дочерние элементы.

Чтобы указать способ перемещения файла, используйте функцию MoveFileEx или MoveFileWithProgress .

Чтобы выполнить эту операцию как транзакцию, используйте функцию MoveFileTransacted .

Синтаксис

BOOL MoveFileW(
  [in] LPCWSTR lpExistingFileName,
  [in] LPCWSTR lpNewFileName
);

Параметры

[in] lpExistingFileName

Текущее имя файла или каталога на локальном компьютере.

По умолчанию имя ограничено MAX_PATH символами. Чтобы расширить это ограничение до 32 767 символов в ширину, добавьте к пути "\\?\". Дополнительные сведения см. в статье Именование файлов, путей и пространств имен.

Совет

Начиная с Windows 10 версии 1607, вы можете согласиться на удаление ограничения MAX_PATH без добавления "\\?\". Дополнительные сведения см. в разделе "Ограничение максимальной длины пути" статьи Именование файлов, путей и пространств имен .

[in] lpNewFileName

Новое имя файла или каталога. Новое имя не должно существовать. Новый файл может находиться в другой файловой системе или на другом диске. Новый каталог должен находиться на том же диске.

По умолчанию имя ограничено MAX_PATH символами. Чтобы расширить это ограничение до 32 767 символов в ширину, добавьте к пути "\\?\". Дополнительные сведения см. в статье Именование файлов, путей и пространств имен.

Совет

Начиная с Windows 10 версии 1607, вы можете согласиться на удаление ограничения MAX_PATH без добавления "\\?\". Дополнительные сведения см. в разделе "Ограничение максимальной длины пути" статьи Именование файлов, путей и пространств имен .

Возвращаемое значение

Если функция выполняется успешно, возвращается ненулевое значение.

Если функция выполняется неудачно, возвращается нулевое значение. Дополнительные сведения об ошибке можно получить, вызвав GetLastError.

Комментарии

Функция MoveFile будет перемещать (переименовывать) файл или каталог (включая его дочерние элементы) либо в одном каталоге, либо между каталогами. Один из них заключается в том, что функция MoveFile будет завершатся сбоем при перемещении каталога, когда назначение находится на другом томе.

Если файл перемещается между томами, MoveFile не перемещает дескриптор безопасности вместе с файлом. Файлу будет назначен дескриптор безопасности по умолчанию в целевом каталоге.

Функция MoveFile координирует свою работу со службой отслеживания ссылок, поэтому источники ссылок можно отслеживать по мере их перемещения.

В Windows 8 и Windows Server 2012 эта функция поддерживается следующими технологиями.

Технология Поддерживается
Протокол SMB 3.0 Да
Прозрачная отработка отказа (TFO) SMB 3.0 См. комментарий
SMB 3.0 с масштабируемыми общими папками (SO) См. комментарий
Файловая система общего тома кластера (CSVFS) Да
Восстанавливаемая файловая система (ReFS) Да
 

SMB 3.0 не поддерживает переименование альтернативных потоков данных в общих папках с возможностью непрерывной доступности.

Примечание

Заголовок winbase.h определяет MoveFile как псевдоним, который автоматически выбирает версию ANSI или Юникод этой функции на основе определения константы препроцессора UNICODE. Сочетание использования псевдонима, не зависящий от кодировки, с кодом, не зависящим от кодировки, может привести к несоответствиям, которые приводят к ошибкам компиляции или среды выполнения. Дополнительные сведения см. в разделе Соглашения для прототипов функций.

Требования

Требование Значение
Минимальная версия клиента Windows XP [только классические приложения]
Минимальная версия сервера Windows Server 2003 [только классические приложения]
Целевая платформа Windows
Header winbase.h (включая Windows.h)
Библиотека Kernel32.lib
DLL Kernel32.dll

См. также

CopyFile

Функции управления файлами

MoveFileEx

MoveFileTransacted

MoveFileWithProgress