FindFirstFile() 可以用于将文件从一个目录移动或复制到另一个目录吗?既然它返回一个句柄,那这个句柄可以用来做吗?
5 回答
它返回的句柄仅对允许您调用 FindNextFile() 有用。非常方便,允许您传递通配符(例如“ . ”)来迭代所有匹配的文件。不要忘记调用 FindClose()。
真正的金块是它返回的 WIN32_FIND_DATA.cFileName 值。这就是您需要调用 MoveFile() 来实际移动文件的那个。
不,它甚至不是内核句柄。此句柄只能传递给FindNextFile
and FindClose
。
PS您不希望返回的句柄CreateEvent
能够复制文件...
FindFirstFile
返回搜索句柄(不是文件句柄),其目的仅用于文件搜索。既然您已经将文件名(和路径)作为参数传递给FindFirstFile
,为什么不直接将它传递给MoveFile/MoveFileEx
. 你甚至不需要调用FindFirstFile
,MoveFile
如果文件不存在就会失败。
MoveFile()函数只接受 2 个参数(从文件名到文件名),因此您无需使用 FindFirstFile 来移动文件。CopyFile()函数类似。
http://msdn.microsoft.com/en-us/library/windows/desktop/aa364418(v=vs.85).aspx
见报价:
如果函数成功,则返回值是在随后调用 FindNextFile 或 FindClose 时使用的搜索句柄,并且 lpFindFileData 参数包含有关找到的第一个文件或目录的信息。
返回值是搜索句柄,而不是文件句柄。由此看来,你不能。