微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使用Windows对话框复制或删除等多个文件或目录?

我的主要问题是:如何执行文件操作与用户可以取消他们在中间。

我知道我可以使用Microsoft.VisualBasic.FileIO命名空间,如: FileSystem.DeleteFile(...)但只给我一个文件的选项。 我想一起删除许多文件。 (和复制一样…)

注意:即使在复制大文件的过程中,我也需要用户能够取消操作,而不仅仅是在文件之间。 我知道我可以做非托pipe代码( – copyFileEx ),但我正在寻找一种pipe理方式来做到这一点,无论它是否使用本机Windows对话框。

编辑:我已经被build议'包装'非托pipe代码和'手动'复制和删除(在下面的答案)。 是否有一个内置的方式(如VisualBasic命名空间的东西,但对于多个文件),我失踪了?

应用程序exception问题

在Windows上用youtube-dl提取audio

如何列出静态链接的python版本中可用的所有openssl密码

“IOError Permisson denied”在Windows上复制文件

防止键盘input到达窗口

使用ShellExecute属性的特定属性选项卡

在Windows上开发iOS应用程序

与网关的Docker容器连接被拒绝

为什么用这种方式计算位图大小?

C ++exception处理程序问题

在复制方面,您需要手动执行此操作,方法是将文件以块的形式复制,并且每次处理大块时都会检查用户是否设置了取消标志。

void copyStream(Stream in,Stream out) { var buf = new byte[512]; int bytesRead; while((bytesRead = in.Read(buf,buf.Length)) > 0) { out.Write(buf,bytesRead); if(cancelled) { // Do you cancel routine return; } } }

对于删除,你最好的选择是你一次处理一个文件删除一个文件,并执行上面描述的相同类型的流程。

这样做的好处是,无论操作系统如何,它都能正常工作。 它将工作,不管文件的类型。 无论您正在执行什么线程,它都可以工作。

我知道迄今为止一个复制方法,你可以做这样的事情,并使用Microsoft.VisualBasic NameSpace不会伤害你的代码检查在这链接文章

从Vista开始可用的IFileOperation shell界面。 本杂志文章中提供了此COM接口的托管类封装。

如果还需要在早期版本的Windows上运行,请回退您现有的代码

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐