можно использовать FindFirstFile () для перемещения файла - PullRequest
1 голос
/ 01 февраля 2012

Можно ли использовать FindFirstFile () для перемещения или копирования файла из одного каталога в другой?Поскольку он возвращает дескриптор, можно ли использовать этот дескриптор для этого?

Ответы [ 5 ]

2 голосов
/ 01 февраля 2012

дескриптор, который он возвращает, полезен только для того, чтобы позволить вам вызвать FindNextFile (). Весьма удобно, вы можете передать подстановочный знак (например, ". ") для итерации всех файлов, которые соответствуют. Не забудьте вызвать FindClose ().

Настоящий слепок - это значение WIN32_FIND_DATA.cFileName, которое он возвращает. Это тот, который вам нужно вызвать MoveFile () для фактического перемещения файла.

2 голосов
/ 01 февраля 2012

Нет, это даже не дескриптор ядра. Этот дескриптор может только быть передан FindNextFile и FindClose.

P.S. Вы не ожидаете, что дескриптор, возвращенный CreateEvent, сможет скопировать файл ...

1 голос
/ 01 февраля 2012

FindFirstFile возвращает дескриптор поиска (не дескриптор файла ), и его назначение только для поиска файла. Поскольку вы уже передаете имя файла (и путь) в качестве аргумента FindFirstFile, почему бы просто не передать его MoveFile/MoveFileEx. Вам даже не нужно звонить FindFirstFile, MoveFile потерпит неудачу, если файл не существует.

1 голос
/ 01 февраля 2012

http://msdn.microsoft.com/en-us/library/windows/desktop/aa364418(v=vs.85).aspx

См. Цитату:

Если функция завершается успешно, возвращаемое значение является дескриптором поиска, используемым в последующем вызове FindNextFile или FindClose, и lpFindFileDataПараметр содержит информацию о первом найденном файле или каталоге.

Возвращаемое значение - дескриптор поиска, а не дескриптор файла.Отсюда может показаться, что вы не можете.

1 голос
/ 01 февраля 2012

Функция MoveFile () принимает только 2 параметра (от имени файла до имени файла), поэтому вам не нужно использовать FindFirstFile для перемещения файла.Функция CopyFile () аналогична.

...