9

ソース ディレクトリとターゲット ディレクトリの場合、MoveFile は実際にはソース ファイルのコピーをターゲット ファイルに作成します。つまり、2 つのファイルが表示されることになります。

それが名前の変更を実現するための最良の方法ですか?

4

4 に答える 4

10

機能は確かにあなたMoveFileが望むものです。ドキュメントから:

MoveFile関数は、ファイルまたはディレクトリ (その子を含む) を同じディレクトリ内またはディレクトリ間で移動 (名前変更) します

ソースとデスティネーションの場所が両方とも同じボリューム上にある場合、アトミックな名前変更操作が実行されます。それらが異なるボリューム上にある場合は、代わりにコピー/削除操作が実行されます (これが最善の方法です)。

于 2010-12-22T18:30:07.740 に答える
5

試す

#include <stdio.h>

int Result = rename( oldname , newname );

if (Result)
   // "Error occurred." );
else
   // "File was successfully renamed!";
于 2010-12-22T20:09:45.857 に答える
2

あなたのコードはどのように見えますか? 私はこれを持っています:

if(MoveFile(_T("c:\\hold\\source"),_T("c:\\hold\\dest")))
{
    printf("succeeded\n");
}else
{
    printf("Error %d\n",GetLastError());
}

ソースを置き去りにしません。

于 2010-12-22T18:15:58.300 に答える
1

を指定せずにMoveFileEx()APIを使用して、MOVEFILE_COPY_ALLOWED探している動作が提供されるかどうかを確認してください。

于 2010-12-22T18:29:29.230 に答える