博客
关于我
C#选定文件复制到指定文件夹
阅读量:616 次
发布时间:2019-03-13

本文共 1344 字,大约阅读时间需要 4 分钟。

有一个小项目需要处理文件复制任务,这下周得好好忙一忙了。用户希望让程序能够复制指定文件夹里的指定文件类型,比如dxf。项目主要分两部分,首先是写一个简单的文件复制器,然后是实现多选文件夹的选择功能。根据项目需求,我得先处理第一个部分,看看怎么才能实现文件的新位置生成,并确保目标文件路径不存在。

具体来说,编写文件复制器这部分不难。可以通过打开文件对话框选择文件,然后用Multiselect属性设置为多选。这样用户就可以一次性选出多个文件进行复制了。设置好默认扩展名为.dxf,并使用过滤器确保只显示这种文件类型,这样用户的选择会更有针对性。

总共有三组参数需要注意。第一个是源文件路径,第二个是目标存储路径,第三个是覆盖须问。如果文件已经存在目标路径,用户是否要覆盖呢?这个最后得看项目具体需求来定。为了防止意外覆盖,可以设置为询问用户确认。

在自己想象的项目中,我需要在用户的程序里显示一个多选文件对话框,这样用户可以自己选择需要编辑的文件。这可能会有点不直观,但适合需要处理多个文件的情况。而且像RestreDirectory这样的小功能可以帮助用户更好地找到需要的文件,不用手动浏览目录东西。

在实现的时候,要注意释放组件,这样不会有内存泄漏的问题。浏览对话框的时候,也可以将当前目录恢复,这样用户不会在找文件的时候出错。回到代码部分,蒙古到达TargetSaveFilePath的时候,要注意怎么拼接路径。通常建议使用Resolve方法,这样能确保路径是完全拼接,避免出现不必要的问题。

再别说一大堆话了,直接进入代码吧!先显示文件对话框,设置多选和过滤器。等用户选择好文件之后,再打印出选中的文件名。这样用户就能在不用打开文件管理器的情况下方便地复制多个文件了。顶起来就能做到快速批量处理了。

完成第一个功能之后,进去看看怎么保证目标路径的正确性。在代码里,用os.Path.Combine还是直接用String.Concat都可以,但ainer.Path.Combine会更稳妥,特别是在不同平台之间转换路径时更可靠。这样既避免了路径拼接错误,又能兼容不同操作系统的实现方式。

至于用户请求的获取文件路径,我得小心处理。在使用对话框获取文件名的同时,也要保存选中的文件名列表。然后在复制文件的时候,一个一个地处理。至于是否保存原始路径,根据需要来定。有些情况下不需要保存初始路径,直接用文件名的新位置复制就可以了。

完成任务之后,还要记得释放对话框,避免在下一次循环中有内存泄漏或者异常情况。这样程序的运行会更加稳定。至于错误处理,放在一个try-catch块里,加上信息提示的方式,这样用户在遇到问题的时候能清楚地了解错误原因。同时,释放文件资源,这样不会占用不必要的内存影响性能。

总的来说,这个简单的文件复制器和多选文件夹处理足够解决当前的问题了。逻辑上不算太复杂,但在实现细节上还是得注意一些关键点。着重在目标路径的生成上,确保不出现路径拼接错误或者不找到的问题。如果有需要,还可以考虑升级对话框的多选来源,比如允许用户选择自己指定的文件夹,或者看看是否支持导入现有的文件列表。这样可以提升程序的灵活性和实用性,不过那以后的事情了,这周的工作先完成这些基础部分吧。

转载地址:http://uozoz.baihongyu.com/

你可能感兴趣的文章
网络+图片加载框架(英文版)
查看>>
扣非净利润连续三年亏损,四维图新如何熬过“转型阵痛期”?
查看>>
前台报Invalid Host/Origin Header错误
查看>>
IE浏览器中input的placeholder不显示
查看>>
【CSP - S T1】格雷码
查看>>
Python imageio方法示例
查看>>
Possible missing firmware
查看>>
算法的学习方式
查看>>
JAVA BigInteger和BigDecimal类常用方式
查看>>
ubuntu挂载移动硬盘出现错误:mount:unknown filesystem type ‘exfat‘
查看>>
深度学习框架 各种模型下载集合 -- models list
查看>>
双层卷积神经网络--tf
查看>>
six.move 的作用
查看>>
错误:'BasicLSTMCell' object has no attribute '_kernel'
查看>>
MySQL(九)SQL优化
查看>>
Django认证系统
查看>>
linux select函数 写一个服务器,转发数据
查看>>
QT for MCU (一)开始
查看>>
机器学习全教程
查看>>
ubuntu配置环境变量(变量不重复)
查看>>