-1

したがって、MoveFileEx の msdn ページには、MOVEFILE_COPY_ALLOWED について次のように記載されています。

ファイルを別のボリュームに移動する場合、関数は CopyFile および DeleteFile 関数を使用して移動をシミュレートします。ファイルが別のボリュームに正常にコピーされ、元のファイルを削除できない場合、関数はソース ファイルをそのままにして成功します。

今私の質問は、まず、ボリュームと言うとき、それは単にあなたの hdd の別の場所を意味すると思いますか? その仮定に従って、読み取り専用のファイルを作成するとします。次に、CopyFile を使用してファイルを移動するだけでなく、MOVEFILE_COPY_ALLOWED フラグを設定して MoveFileEx を呼び出します。その後、ファイルを削除しようとすると失敗するはずです。これは、DeleteFile が読み取り専用ファイルを削除できないためです。

ファイルが古い場所から削除されていることを除いて、上記を実行しています。私の唯一の考えは、音量は私が上で言ったこととは異なる何かを意味するということでした.

4

1 に答える 1

1

VolumeC:からへD:、またはローカル ドライブからリモート ドライブへ (またはその逆)など、システム上の別のドライブ (パーティション) を意味します。

同じボリュームにコピーしている場合 (たとえば、からC:\Test\C:\TestTwo\、それらは同じボリューム上にあります。

と言うドキュメントには何も表示されませんIf the file is read-only and therefore unable to be deleted。なるほどIf the file is unable to be deleted、これはおそらく を意味しIf the file is in use or you don't have proper rights in the source location to delete itます。結局のところ、あなたは を呼び出してファイルを移動するよう求めていますMoveFileEx

ファイルを削除したくない場合は、MoveFileまたはを呼び出さないでくださいMoveFileEx。代わりに使用CopyFileしてください。これは明らかにやりたいことです。

于 2012-05-30T12:43:07.293 に答える