[英]C++ Win32 API Delete file with progress bar
使用 windows api,有沒有辦法刪除一個大文件(比如說 1gb+),並以某種方式監控進度? 我確定它可能,但我不知道從哪里開始..
編輯:應該更具體,我想將文件移動到回收站,並顯示一個類似於探索的進度條,盡管我可能想要控制台或其他東西中的進度條,所以我不想要一個精確的副本。
編輯 2:是的,我猜它是即時的,在我問這個問題之前應該已經測試過了。 無論如何要關閉這個問題?
使用帶有FO_DELETE
函數和FOF_ALLOWUNDO
標志的SHFileOperation將文件移動到回收站。 除非您還指定 FOF_SILENT,否則將自動顯示進度。
SHFILEOPSTRUCT fileop = { 0 };
fileop.hwnd = hwndMain; /* your window */
fileop.wFunc = FO_DELETE;
fileop.pFrom = szFilePathToDelete;
fileop.fFlags = FOF_ALLOWUNDO /* | FOF_NOCONFIRMATION to recycle without prompting */;
int error = SHFileOperation(&fileop);
更新:如問題編輯中所述,不會顯示單個文件的進度,但如果回收整個目錄,則會顯示進度。 這也不允許您覆蓋 UI(例如,在控制台窗口中顯示進度)。
也許您可以使用 SetEndOfFile 逐步截斷它? http://msdn.microsoft.com/en-us/library/aa365531(v=vs.85).aspx 。 然后可以快速完成刪除 inode(或在 Windows 領域中調用的任何內容)。
[更新]剛剛測試過; 其他人是對的。 刪除 inode(刪除)在 1gb 文件上是即時的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.