C++Win32 API删除带有进度条的文件
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中的任何名称)可以很快完成。
[更新]刚刚测试;其他人是对的。删除索引节点(delete)在1gb文件上是即时的。
相关文章:
- 如何使用 samtools C API 构建一个简单的主.cpp文件
- clang 的 libFuzzer 可以在同一二进制文件中测试超过 1 个 API 吗?
- 如何使用Windows API C++更改已创建的文件夹/目录安全权限
- 两个线程一个使用流 Api,另一个线程创建文件失败并出现错误ERROR_SHARING_VIOLATION
- sf::Windows上的音乐:api-ms-win-crt-locale-l1-1-0.dll:无法打开共享对象文件
- 通过n-api在nodejs中使用多个cpp文件
- 编译包含LLVM API标头的C++文件时出错
- 是否有一个Windows驱动程序函数可以执行Windows文件api SeFileAttributes的等效功能
- 如何检查 win32 exe 文件是否已运行?(使用 win32 API 代码)
- 如何在C#或C++中获取文件或文件夹的有效权限?有什么 API 吗?
- Windows 文件系统 API 不同的输出
- 如何将第三方 dll、标头和库文件与 Node N-API 一起使用
- 如何防止带有模板的整个 API 仅成为 .h 文件的集合?
- Python API用于解析包含数组格式的protobuf数据的二进制文件
- 在Xcode(mac api)上,是否有任何带有Sleep()函数/命令的文件?
- 使用YAML -CPP新API - 已修复的YAML文件解决
- 如何在 go 中调用带有 .lib 和.dll文件的预构建 API
- 如何使用 Win API 获取文件夹中的文件列表(带过滤器)
- UWP 是否有同步文件读/写 API
- 这是正确的使用windows文件API吗?(多个重叠的请求)