在之前写过的一个项目中,有一个关于主机设备对插入的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盘文件的自动拷贝相关推荐

  1. python编写代码实现文件的拷贝功能_python从一个文件夹自动拷贝文件到目标文件夹的代码...

    这里为大家提供一个python操作文件的例子,实现功能:从一个文件夹自动拷贝文件到目标文件夹. 供python爱好者学习参考. 代码如下: # Filename: CopyPictures.py im ...

  2. mac u盘文件过大 拷贝不进去_mac文件太大无法复制到u盘怎么办-mac文件太大无法拷贝解决方法 - 河东软件园...

    在日常的学习/生活/工作中我们常常使用U盘储存文件,而想必许多用户在Mac上将比较大的文件拷贝到U盘时,常常会出现"文件太大无法拷贝"的错误提示,而此时我们会发现,其实我们的U盘明 ...

  3. mac u盘文件过大 拷贝不进去_U盘拷贝文件提示目标文件过大无法复制到U盘的解决方法...

    我们经常需要使用U盘来存储文件,但是在拷贝文件的时候却提示目标文件过大无法复制到U盘,但是查看U盘的存储空间肯定是足够的,那么问题有可能出在U盘的格式上.一般来说,fat32格式的U盘只允许拷贝或者创 ...

  4. mac u盘文件过大 拷贝不进去_告诉你Mac 为什么不能拷贝文件到U盘

    图二:U盘出于只读状态 选择U盘,右击--显示信息,发现U盘现在是出于只读状态,所以既不能拷贝文件,也不能修改文件,只能查看文件. 3.解决方法 图三:打开NTFS For Mac 界面 打开NTFS ...

  5. mac u盘文件过大 拷贝不进去_使用mac时文件太大无法拷贝怎么办

    高新科技的不断发展,我们对文件储存需求越来越大,无论是手机还是电脑文件的存储经常会非常大,那么对于这些大文件的拷贝,我们常常会遇到文件太大无法拷贝的问题,下面小编就针对mac用户来教大家如何解决这一问 ...

  6. mac u盘文件过大 拷贝不进去_Mac文件太大无法拷贝怎么办?Mac文件太大无法复制到u盘解决办法...

    现在的网速是越来越快了,各种在线传输文件还是算比较快了,若遇到像7.8个GB的文件,还是U盘来得实在,但是很的多Mac用户在向U盘拷贝文件时总会遇到"文件太大,无法拷贝"的错误提示 ...

  7. mac u盘文件过大 拷贝不进去_Mac-文件太大不能放入U盘中

    现在的网速是越来越快了,各种在线传输文件还是算比较快了,若遇到像7.8个GB的文件,还是U盘来得实在,但是很的多Mac用户在向U盘拷贝文件时总会遇到"文件太大,无法拷贝"的错误提示 ...

  8. mac u盘文件过大 拷贝不进去_mac文件太大无法复制到u盘怎么办 mac文件太大无法复制到u盘解决方法...

    类型:Mac图形图像大小:23.3M语言:中文 评分:10.0 标签: 立即下载 mac文件太大无法复制到u盘怎么办?mac文件太大无法复制到u盘解决方法.最近很多用户在询问mac文件太大无法复制到u ...

  9. mac u盘文件过大 拷贝不进去_Mac大文件无法复制到U盘怎么办

    我们在处理一些比较大的文件时候,一般会采用用U盘的方法,因为u盘的方式比直接下载快很多,有一些在用Mac的朋友反应:他们在向U盘拷贝文件时总会遇到"文件太大,无法拷贝"的一个错误提 ...

  10. 删除U盘文件夹后自动生成不同位数字的新文件夹

    夹删除U盘文件后自动生成不同位数字的新文件夹解决方法 右键点击目录所在磁盘(C,D,E这种)的属性-选择工具-选择检查,系统自动修复文件系统错误. 如果U盘错误比较严重,修复的时间可能会比较久 然后在 ...

最新文章

  1. LINUX 查找tomcat日志关键词
  2. SAP MM 启用了Advanced Return Management之后采购订单上的一些变化
  3. 关于防范csrf攻击基于token鉴权
  4. 图解Windows下使用SSH Secure Shell Client远程连接Linux
  5. linux nvme分区,这些 loop 分区是什么鬼东西?
  6. python 两个内置函数——locals 和globals(名字空间)批量以自定义变量名创建对象
  7. 2019央视春晚公布主持阵容 语言类节目将有突破
  8. 超赞!UX写手必备技能
  9. 什么软件可以让手机使用免费WiFi上网
  10. Java 下数据业务逻辑开发技术 JOOQ 和 SPL
  11. 【Java】俄罗斯方块带背景音乐
  12. 有源和无源设备的共质心布局:回顾和未来之路
  13. 中兴力维动环监控_高新兴FSU中兴力维FSU艾默生FSU收购
  14. 二叉树-求叶节点个数
  15. 职业规划 思维导图
  16. 冯诺依曼体系结构与操作系统的概念及理解
  17. python爬虫一:必应图片(从网页源代码中找出图片链接然后下载)
  18. Python小工具-电影天堂爬取电影下载链接
  19. 模拟信号,数字信号,基带信号,宽带信号,频带信号
  20. 自动驾驶系统入门(一) - 环境感知

热门文章

  1. 图像检索算法 TODO
  2. 对区块链技术的一些思考
  3. 【C语言】C语言实现泛型编程
  4. python3之http.server模块
  5. another app is currently holding the yum lock;waiting for it to exit
  6. tlac100怎么添加ap_如何设置AC功能管理无线AP
  7. 韩立刚老师 -- 1、Linux 入门
  8. java digester_Apache Commons Digester
  9. 3DMAX安装包+安装教程
  10. 生不出孩子怪天气?驳《我国工业软件失去的30年》一文 | 凌云时刻