可以使用FindFirstFile()来移动文件

时间:2012-02-01 12:52:29

标签: c++ visual-c++ win32-process

可以使用FindFirstFile()将文件从一个目录移动或复制到另一个目录吗?因为它返回一个句柄,这个句柄可以用来做吗?

5 个答案:

答案 0 :(得分:2)

不,它甚至不是内核句柄。此句柄可以传递给FindNextFileFindClose

P.S。您不希望CreateEvent返回的句柄能够复制文件...

答案 1 :(得分:2)

它返回的句柄仅用于允许您调用FindNextFile()。非常方便,允许您传递通配符(例如“”)来迭代匹配的所有文件。不要忘记调用FindClose()。

真正的块是它返回的WIN32_FIND_DATA.cFileName值。这就是你需要调用MoveFile()来实际移动文件。

答案 2 :(得分:1)

MoveFile()函数只接受2个参数(从文件名到文件名),因此您不需要使用FindFirstFile来移动文件。 CopyFile()功能类似。

答案 3 :(得分:1)

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

见报价:

  

如果函数成功,则返回值是用于的搜索句柄   随后调用FindNextFile或FindClose,以及lpFindFileData   参数包含有关第一个文件或目录的信息   找到。

返回值是搜索句柄,而不是文件句柄。从这看起来,你似乎不能。

答案 4 :(得分:1)

FindFirstFile返回搜索句柄(不是文件句柄),其目的仅用于文件搜索。由于您已经将文件名(和路径)作为参数传递给FindFirstFile,为什么不将其传递给MoveFile/MoveFileEx。您甚至不需要致电FindFirstFile,如果文件不存在,MoveFile将会失败。