博客
关于我
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/

你可能感兴趣的文章
java文件上传
查看>>
DHCP跨网段分配IP地址
查看>>
Mysql(常用函数)
查看>>
10.多线程与并行
查看>>
Callable中call方法和Runnable中run方法的区别
查看>>
IDEA上移除项目(逻辑删除)
查看>>
Docker方式启动tomcat,访问首页出现404错误
查看>>
Docker方式启动tomcat,访问首页出现404错误(第二篇 -- 将修改过的容器映射成镜像)
查看>>
【蓝桥杯】 java 大学c组 省赛 1、隔行变色
查看>>
BIM轻量化——浏览器展示 | 利用unity
查看>>
超市账单管理系统
查看>>
Springboot实现热部署
查看>>
composer 介绍、安装及基本使用方法
查看>>
PHP SPL标准库(辅助数据结构)
查看>>
PHP 的 ::class 用法
查看>>
Python学习之列表用法
查看>>
升级qiime2
查看>>
Kubernetes状态实例
查看>>
#Linux杂记--Ubuntu 将系统编码设置为UTF-8,时区设置为中国上海的方法
查看>>
Linux vi命令模式
查看>>