C#实现对即插U盘文件的自动拷贝
在之前写过的一个项目中,有一个关于主机设备对插入的USB设备自动拷取USB设备存储的所有文件的功能。今天就将这个功能的源码进行展示和介绍。
此问题的解决思路可以拆分为两个步骤:第一步为此程序对插入主机的USB设备的消息及USB设备在主机上的盘符等信息;第二步为此程序完成将USB设备中的文件拷贝至主机指定路径目录下。
第一步的实现代码如下所示:
protected override void WndProc(ref Message m){try{if (m.Msg == WM_DEVICECHANGE){switch (m.WParam.ToInt32()){case DBT_DEVICEARRIVAL: //U盘插入 DriveInfo[] s = DriveInfo.GetDrives();foreach (DriveInfo drive in s){if (drive.DriveType == DriveType.Removable){DeviceModel = drive.Name.ToString();FileSend();break;}}break;default:break;}}}catch (Exception ex){MessageBox.Show(ex.Message);}base.WndProc(ref m);}
protected override WndProc(ref Message m)
参数 m
与当前 Windows 消息相关联的 Message。
备注
当窗口消息发送到窗口的句柄时,将调用此方法。对继承者的说明: 重写此方法以实现特定消息处理。对未处理的消息调用 base.WndProc。
第二步中文件拷贝代码如下所示:
private void CopyDirectory(string srcdir, string desdir){string folderName = srcdir.Substring(srcdir.LastIndexOf("\\") + 1);string desfolderdir = desdir + "\\" + PoliceID;if (desdir.LastIndexOf("\\") == (desdir.Length - 1)){desfolderdir = desdir + folderName;}string[] filenames = Directory.GetFileSystemEntries(srcdir);foreach (string file in filenames)// 遍历所有的文件和目录{if (Directory.Exists(file))// 先当作目录处理如果存在这个目录就递归Copy该目录下面的文件{string currentdir = desfolderdir + "\\" + file.Substring(file.LastIndexOf("\\") + 1);if (!Directory.Exists(currentdir)){Directory.CreateDirectory(currentdir);}CopyDirectory(file, desfolderdir);}else // 否则直接copy文件{string srcfileName = file.Substring(file.LastIndexOf("\\") + 1);srcfileName = desfolderdir + "\\" + srcfileName;if (!Directory.Exists(desfolderdir)){Directory.CreateDirectory(desfolderdir);}try{File.Copy(file, srcfileName);}catch (Exception e){continue;}}}//foreach }
由于此代码为从之前项目中抽出来的,所以,路径变量会有一些冗余,但不影响程序运行。
程序运行实例:
程序运行后,只需要输入文件拷贝路径即可。之后,只要主机上有USB设备插入即可自动将插入的USB设备拷贝至指定目录下。
更多有关使用C#进行USB通信的可以查看LibUsbDotNet动态链接库。
本程序的源码及LibUsbDotNet动态链接库下载地址:https://github.com/XiaoYaoNet/USBread
C#实现对即插U盘文件的自动拷贝相关推荐
- python编写代码实现文件的拷贝功能_python从一个文件夹自动拷贝文件到目标文件夹的代码...
这里为大家提供一个python操作文件的例子,实现功能:从一个文件夹自动拷贝文件到目标文件夹. 供python爱好者学习参考. 代码如下: # Filename: CopyPictures.py im ...
- mac u盘文件过大 拷贝不进去_mac文件太大无法复制到u盘怎么办-mac文件太大无法拷贝解决方法 - 河东软件园...
在日常的学习/生活/工作中我们常常使用U盘储存文件,而想必许多用户在Mac上将比较大的文件拷贝到U盘时,常常会出现"文件太大无法拷贝"的错误提示,而此时我们会发现,其实我们的U盘明 ...
- mac u盘文件过大 拷贝不进去_U盘拷贝文件提示目标文件过大无法复制到U盘的解决方法...
我们经常需要使用U盘来存储文件,但是在拷贝文件的时候却提示目标文件过大无法复制到U盘,但是查看U盘的存储空间肯定是足够的,那么问题有可能出在U盘的格式上.一般来说,fat32格式的U盘只允许拷贝或者创 ...
- mac u盘文件过大 拷贝不进去_告诉你Mac 为什么不能拷贝文件到U盘
图二:U盘出于只读状态 选择U盘,右击--显示信息,发现U盘现在是出于只读状态,所以既不能拷贝文件,也不能修改文件,只能查看文件. 3.解决方法 图三:打开NTFS For Mac 界面 打开NTFS ...
- mac u盘文件过大 拷贝不进去_使用mac时文件太大无法拷贝怎么办
高新科技的不断发展,我们对文件储存需求越来越大,无论是手机还是电脑文件的存储经常会非常大,那么对于这些大文件的拷贝,我们常常会遇到文件太大无法拷贝的问题,下面小编就针对mac用户来教大家如何解决这一问 ...
- mac u盘文件过大 拷贝不进去_Mac文件太大无法拷贝怎么办?Mac文件太大无法复制到u盘解决办法...
现在的网速是越来越快了,各种在线传输文件还是算比较快了,若遇到像7.8个GB的文件,还是U盘来得实在,但是很的多Mac用户在向U盘拷贝文件时总会遇到"文件太大,无法拷贝"的错误提示 ...
- mac u盘文件过大 拷贝不进去_Mac-文件太大不能放入U盘中
现在的网速是越来越快了,各种在线传输文件还是算比较快了,若遇到像7.8个GB的文件,还是U盘来得实在,但是很的多Mac用户在向U盘拷贝文件时总会遇到"文件太大,无法拷贝"的错误提示 ...
- mac u盘文件过大 拷贝不进去_mac文件太大无法复制到u盘怎么办 mac文件太大无法复制到u盘解决方法...
类型:Mac图形图像大小:23.3M语言:中文 评分:10.0 标签: 立即下载 mac文件太大无法复制到u盘怎么办?mac文件太大无法复制到u盘解决方法.最近很多用户在询问mac文件太大无法复制到u ...
- mac u盘文件过大 拷贝不进去_Mac大文件无法复制到U盘怎么办
我们在处理一些比较大的文件时候,一般会采用用U盘的方法,因为u盘的方式比直接下载快很多,有一些在用Mac的朋友反应:他们在向U盘拷贝文件时总会遇到"文件太大,无法拷贝"的一个错误提 ...
- 删除U盘文件夹后自动生成不同位数字的新文件夹
夹删除U盘文件后自动生成不同位数字的新文件夹解决方法 右键点击目录所在磁盘(C,D,E这种)的属性-选择工具-选择检查,系统自动修复文件系统错误. 如果U盘错误比较严重,修复的时间可能会比较久 然后在 ...
最新文章
- LINUX 查找tomcat日志关键词
- SAP MM 启用了Advanced Return Management之后采购订单上的一些变化
- 关于防范csrf攻击基于token鉴权
- 图解Windows下使用SSH Secure Shell Client远程连接Linux
- linux nvme分区,这些 loop 分区是什么鬼东西?
- python 两个内置函数——locals 和globals(名字空间)批量以自定义变量名创建对象
- 2019央视春晚公布主持阵容 语言类节目将有突破
- 超赞!UX写手必备技能
- 什么软件可以让手机使用免费WiFi上网
- Java 下数据业务逻辑开发技术 JOOQ 和 SPL
- 【Java】俄罗斯方块带背景音乐
- 有源和无源设备的共质心布局:回顾和未来之路
- 中兴力维动环监控_高新兴FSU中兴力维FSU艾默生FSU收购
- 二叉树-求叶节点个数
- 职业规划 思维导图
- 冯诺依曼体系结构与操作系统的概念及理解
- python爬虫一:必应图片(从网页源代码中找出图片链接然后下载)
- Python小工具-电影天堂爬取电影下载链接
- 模拟信号,数字信号,基带信号,宽带信号,频带信号
- 自动驾驶系统入门(一) - 环境感知
热门文章
- 图像检索算法 TODO
- 对区块链技术的一些思考
- 【C语言】C语言实现泛型编程
- python3之http.server模块
- another app is currently holding the yum lock;waiting for it to exit
- tlac100怎么添加ap_如何设置AC功能管理无线AP
- 韩立刚老师 -- 1、Linux 入门
- java digester_Apache Commons Digester
- 3DMAX安装包+安装教程
- 生不出孩子怪天气?驳《我国工业软件失去的30年》一文 | 凌云时刻