ソース ディレクトリとターゲット ディレクトリの場合、MoveFile は実際にはソース ファイルのコピーをターゲット ファイルに作成します。つまり、2 つのファイルが表示されることになります。
それが名前の変更を実現するための最良の方法ですか?
ソース ディレクトリとターゲット ディレクトリの場合、MoveFile は実際にはソース ファイルのコピーをターゲット ファイルに作成します。つまり、2 つのファイルが表示されることになります。
それが名前の変更を実現するための最良の方法ですか?
機能は確かにあなたMoveFile
が望むものです。ドキュメントから:
MoveFile関数は、ファイルまたはディレクトリ (その子を含む) を同じディレクトリ内またはディレクトリ間で移動 (名前変更) します。
ソースとデスティネーションの場所が両方とも同じボリューム上にある場合、アトミックな名前変更操作が実行されます。それらが異なるボリューム上にある場合は、代わりにコピー/削除操作が実行されます (これが最善の方法です)。
試す
#include <stdio.h>
int Result = rename( oldname , newname );
if (Result)
// "Error occurred." );
else
// "File was successfully renamed!";
あなたのコードはどのように見えますか? 私はこれを持っています:
if(MoveFile(_T("c:\\hold\\source"),_T("c:\\hold\\dest")))
{
printf("succeeded\n");
}else
{
printf("Error %d\n",GetLastError());
}
ソースを置き去りにしません。
を指定せずにMoveFileEx()
APIを使用して、MOVEFILE_COPY_ALLOWED
探している動作が提供されるかどうかを確認してください。