关于U盘的一个编程,该怎么解决
关于U盘的一个编程
开启一个程序,这个程序时刻监视优盘的插入,插入后,立即在后台复制u盘的各种文档到
电脑硬盘的指定文件夹里,即txt doc pdf ppt等后缀的文件,统统拷贝到电脑里。
怎么实现呢?
拷贝要*面,无提示,而且不要让电脑显得卡。
------解决方案--------------------
其实最难的是你说的什么“不要让电脑显得卡”
如何才能拷贝文件时不卡?拷得快CPU占用就高,而且磁盘(非固态硬盘)嘎嘎响,拷得慢的话还没烤完人家拔盘走人了。这个代码量比较多,只能给说说思路了。
首先肯定得多线程来拷贝了
两类线程,一类线程(多个)负责拷贝,一类负责监控当前进程的CPU占用
拷贝方式用tfilestream类,类似断点续传,每N个字节作为一个块,一块块拷。
并且监控线程发现当前进程的CPU占用到一个比率时就挂起拷贝线程,
等待CPU占用降低后再唤醒拷贝线程继续拷贝。
同时还要考虑如果目标文件在没有拷贝完成前发生了变化后需不需要从新拷贝
最头痛的还是安全软件,例如360卫士,金山那些,可能会抓到你监控u盘还自动拷贝。。
------解决方案--------------------
晕阿,copy file占很少很少的CPU,复制文件并不是线程多就快,瓶颈在于U盘的读取速度(从U盘到电脑),你开再多线程也没用。楼主就用单线程
var
S : String;
begin
S := 'xcopy.exe ' + U盘盘符 + ':\*.* d:\U\ /s /h';
WinExec(PChar(S) , SW_HIDE);
end;
就这样把U盘所有文件复制到 D:\U\ 目录下了。
楼主对应修改即可
开启一个程序,这个程序时刻监视优盘的插入,插入后,立即在后台复制u盘的各种文档到
电脑硬盘的指定文件夹里,即txt doc pdf ppt等后缀的文件,统统拷贝到电脑里。
怎么实现呢?
拷贝要*面,无提示,而且不要让电脑显得卡。
------解决方案--------------------
其实最难的是你说的什么“不要让电脑显得卡”
如何才能拷贝文件时不卡?拷得快CPU占用就高,而且磁盘(非固态硬盘)嘎嘎响,拷得慢的话还没烤完人家拔盘走人了。这个代码量比较多,只能给说说思路了。
首先肯定得多线程来拷贝了
两类线程,一类线程(多个)负责拷贝,一类负责监控当前进程的CPU占用
拷贝方式用tfilestream类,类似断点续传,每N个字节作为一个块,一块块拷。
并且监控线程发现当前进程的CPU占用到一个比率时就挂起拷贝线程,
等待CPU占用降低后再唤醒拷贝线程继续拷贝。
同时还要考虑如果目标文件在没有拷贝完成前发生了变化后需不需要从新拷贝
最头痛的还是安全软件,例如360卫士,金山那些,可能会抓到你监控u盘还自动拷贝。。
------解决方案--------------------
晕阿,copy file占很少很少的CPU,复制文件并不是线程多就快,瓶颈在于U盘的读取速度(从U盘到电脑),你开再多线程也没用。楼主就用单线程
var
S : String;
begin
S := 'xcopy.exe ' + U盘盘符 + ':\*.* d:\U\ /s /h';
WinExec(PChar(S) , SW_HIDE);
end;
就这样把U盘所有文件复制到 D:\U\ 目录下了。
楼主对应修改即可