3 回答

TA貢獻(xiàn)1811條經(jīng)驗(yàn) 獲得超5個(gè)贊
Win32不保證原子文件元數(shù)據(jù)操作。我會提供引用,但沒有引用-沒有書面或書面保證的事實(shí)就足夠了。
您將必須編寫自己的例程來支持此操作。不幸的是,但是您不能指望win32提供這種級別的服務(wù)-根本不是為它設(shè)計(jì)的。

TA貢獻(xiàn)1780條經(jīng)驗(yàn) 獲得超4個(gè)贊
在Windows Vista和Windows Server 2008中,已添加了原子移動功能-MoveFileTransacted()
不幸的是,這對于舊版本的Windows沒有幫助。

TA貢獻(xiàn)2012條經(jīng)驗(yàn) 獲得超12個(gè)贊
在Windows上,您仍然可以進(jìn)行rename()調(diào)用,盡管我想如果不知道您使用的文件系統(tǒng)就無法做出您想要的保證-例如,如果您使用的是FAT,則無法保證。
但是,可以使用MoveFileEx并使用MOVEFILE_REPLACE_EXISTING和MOVEFILE_WRITE_THROUGH選項(xiàng)。后者在MSDN中具有以下描述:
設(shè)置此值可確保在函數(shù)返回之前將作為復(fù)制和刪除操作執(zhí)行的移動刷新到磁盤。刷新發(fā)生在復(fù)制操作結(jié)束時(shí)。
我知道這不一定與重命名操作相同,但是我認(rèn)為這可能是您獲得的最佳保證-如果這樣做是為了移動文件,則應(yīng)該進(jìn)行更簡單的重命名。
- 3 回答
- 0 關(guān)注
- 889 瀏覽
添加回答
舉報(bào)