2011-12-08 86 views
0

我正在使用CopyFileEx複製具有該功能的文件。移動文件有什麼特點嗎?請記住,並非每一個動作都很快 - 移動到另一個驅動器實際上是一個副本。有沒有辦法移動一個能夠取消中間移動的文件?

我現在的解決方案是複製並刪除原始文件,如果移動到不同的根目錄,並且只是移動(並且希望它實際上只是指向文件的指針的改變)if它是在同一個根目錄下。

有沒有簡單的解決方案(如CopyFileEx)?

回答

3

MoveFileTransactedMoveFileWithProgress可能更適合?我相信可以取消。

BOOL WINAPI MoveFileWithProgress(
    __in  LPCTSTR lpExistingFileName, 
    __in_opt LPCTSTR lpNewFileName, 
    __in_opt LPPROGRESS_ROUTINE lpProgressRoutine, 
    __in_opt LPVOID lpData, 
    __in  DWORD dwFlags 
); 

移動時在捲上的文件時,如果lpProgressRoutine返回PROGRESS_CANCEL由於用戶取消操作,MoveFileWithProgress將返回零,並且GetLastError將返回ERROR_REQUEST_ABORTED。現有文件保持不變。

跨卷移動文件時,如果由於用戶停止操作而導致lpProgressRoutine返回PROGRESS_STOP,MoveFileWithProgress將返回零,並且GetLastError將返回ERROR_REQUEST_ABORTED。現有文件保持不變。

+0

感謝。他們之間有什麼區別=「......作爲交易操作」是什麼意思? – ispiro

+1

如果這個舉動是針對整個目錄的,例如他們要麼全部成功,要麼全都不成立。我相信只適用於本地NTFS移動,而不是網絡移動。 – Cylindric

+0

交易意味着它是原子。全部或沒有。 – Bengie

相關問題