FindFirstFile() を使用して、あるディレクトリから別のディレクトリにファイルを移動またはコピーできますか? ハンドルを返すので、このハンドルを使用して実行できますか?
5 に答える
返されるハンドルは、FindNextFile() を呼び出せるようにするためにのみ役立ちます。非常に便利で、ワイルドカード (" . " など) を渡して、一致するすべてのファイルを反復処理できます。FindClose() を呼び出すことを忘れないでください。
本当のナゲットは、それが返す WIN32_FIND_DATA.cFileName 値です。これは、実際にファイルを移動するために MoveFile() を呼び出す必要があるものです。
いいえ、それはカーネル ハンドルではありません。このハンドルは、およびにのみ渡すことができます。FindNextFile
FindClose
CreateEvent
PS によって返されるハンドルがファイルをコピーできるとは思わないでください...
http://msdn.microsoft.com/en-us/library/windows/desktop/aa364418(v=vs.85).aspx
引用を参照してください:
関数が成功した場合、戻り値は、FindNextFileまたはFindCloseへの後続の呼び出しで使用される検索ハンドルであり、lpFindFileDataパラメーターには、最初に見つかったファイルまたはディレクトリーに関する情報が含まれます。
戻り値は検索ハンドルであり、ファイルハンドルではありません。このことから、あなたはできないように思われるでしょう。
MoveFile ()関数は2つのパラメーター(ファイル名からファイル名まで)を受け取るだけなので、ファイルを移動するためにFindFirstFileを使用する必要はありません。CopyFile()関数も同様です。
FindFirstFile
(ファイルハンドルではなく)検索ハンドルを返します。その目的はファイル検索のみです。に引数としてファイル名(およびパス)を既に渡しているので、単にそれをに渡してみませんか。を呼び出す必要はありません。ファイルが存在しない場合は失敗します。FindFirstFile
MoveFile/MoveFileEx
FindFirstFile
MoveFile