C++ C++;Win32 API使用进度条删除文件
使用windows api,有没有办法删除一个大文件(比如1gb+),并以某种方式监控进度?我相信这是可能的,但我不知道从哪里开始 编辑:应该更具体一点,我想将文件移动到回收站,并显示一个类似于explores的进度条,尽管我可能希望进度条位于控制台或其他地方,因此我不想要精确的副本 编辑2:是啊,我猜这是即时的,在我问问题之前应该已经测试过了。C++ C++;Win32 API使用进度条删除文件,c++,file,api,winapi,delete-file,C++,File,Api,Winapi,Delete File,使用windows api,有没有办法删除一个大文件(比如1gb+),并以某种方式监控进度?我相信这是可能的,但我不知道从哪里开始 编辑:应该更具体一点,我想将文件移动到回收站,并显示一个类似于explores的进度条,尽管我可能希望进度条位于控制台或其他地方,因此我不想要精确的副本 编辑2:是啊,我猜这是即时的,在我问问题之前应该已经测试过了。 无论如何,要结束这个问题?也许您可以使用SetEndOfFile?逐步截断它。然后删除inode(或者在windowsland中的任何名称)可以很快完
无论如何,要结束这个问题?也许您可以使用SetEndOfFile?逐步截断它。然后删除inode(或者在windowsland中的任何名称)可以很快完成
[更新]刚刚测试;其他人是对的。删除索引节点(删除)在1gb文件上是即时的。也许您可以使用SetEndOfFile?逐步截断它。然后删除inode(或者在windowsland中的任何名称)可以很快完成 [更新]刚刚测试;其他人是对的。在1gb文件上删除inode(delete)是即时的。与
fou delete
func和FOF\u ALLOWUNDO
标志一起使用,将文件移动到回收站。除非同时指定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(例如,在控制台窗口中显示进度)。使用fou DELETE
func和FOF\u ALLOWUNDO
标志将文件移动到回收站。除非同时指定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(例如,在控制台窗口中显示进度)。您真的要删除它,还是将其移动到回收站?您是否试图显示与资源管理器显示的删除进度条相同的进度条?删除文件时进度条的含义是什么?这是一个不依赖于文件大小的操作。当你说删除时,是指安全擦除吗?删除1Gb+文件不会比删除1Kb文件花费更长的时间,因为文件中的大部分数据不会被DeleteFile()触及。。。您实际上只是在更改元数据。是否编辑-移动到回收站也是一项不依赖于文件大小的操作,这是硬盘驱动器内的移动-只是重新连接到另一个目录。您真的要删除它,还是将其移动到回收站?您是否试图显示与资源管理器显示的删除进度条相同的进度条?删除文件时进度条的含义是什么?这是一个不依赖于文件大小的操作。当你说删除时,是指安全擦除吗?删除1Gb+文件不会比删除1Kb文件花费更长的时间,因为文件中的大部分数据不会被DeleteFile()触及。。。您实际上只是在更改元数据。如果编辑-移动到回收站是一个不依赖于文件大小的操作,这是在硬盘驱动器内的移动-只是重新连接到另一个目录。