Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/155.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C++;Win32 API使用进度条删除文件_C++_File_Api_Winapi_Delete File - Fatal编程技术网

C++ C++;Win32 API使用进度条删除文件

C++ C++;Win32 API使用进度条删除文件,c++,file,api,winapi,delete-file,C++,File,Api,Winapi,Delete File,使用windows api,有没有办法删除一个大文件(比如1gb+),并以某种方式监控进度?我相信这是可能的,但我不知道从哪里开始 编辑:应该更具体一点,我想将文件移动到回收站,并显示一个类似于explores的进度条,尽管我可能希望进度条位于控制台或其他地方,因此我不想要精确的副本 编辑2:是啊,我猜这是即时的,在我问问题之前应该已经测试过了。 无论如何,要结束这个问题?也许您可以使用SetEndOfFile?逐步截断它。然后删除inode(或者在windowsland中的任何名称)可以很快完

使用windows api,有没有办法删除一个大文件(比如1gb+),并以某种方式监控进度?我相信这是可能的,但我不知道从哪里开始

编辑:应该更具体一点,我想将文件移动到回收站,并显示一个类似于explores的进度条,尽管我可能希望进度条位于控制台或其他地方,因此我不想要精确的副本

编辑2:是啊,我猜这是即时的,在我问问题之前应该已经测试过了。
无论如何,要结束这个问题?

也许您可以使用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()触及。。。您实际上只是在更改元数据。如果编辑-移动到回收站是一个不依赖于文件大小的操作,这是在硬盘驱动器内的移动-只是重新连接到另一个目录。