| | | | | | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | | | |      |
|
如何复制一个正在使用的文件?(VB6.0) [ 2007-05-05
| 作者:马大哈 | 来自:本站原创]
 |
刚刚在群里与别人聊到,使用VB的FileCopy函数无法复制正在使用中的文件.
他是想将数据库备份.
网上有不少的办法,有使用API的,有使用FSO的等.
我想,无法复制使用中的文件,可能是使用了读写模式打开源文件的原因吧.
于是就试着写了以下函数:
Public Function FileCopyEx(ByVal SouFileName As String, ByVal DestFileName As String)
'复制文件,可以复制正在使用的文件.
'SouFileName - 源文件
'DestFileName - 目标文件
'By 马大哈
'2007-05-05
Dim tmpArr() As Byte
Open SouFileName For Binary Access Read As #1
ReDim tmpArr(LOF(1))
Get 1, , tmpArr
Close #1
Open DestFileName For Binary As #2
Put 2, , tmpArr
Close #2
ReDim tmpArr(0) '释放内存
End Function
FileCopyEx与FileCopy是一样的用法,不过它可以复制正在使用中的文件.
代码非常简单,就不说明了.
但这种原理的代码是有问题的,就是在复制很大的文件时,程序会挂起.(文件小感觉不到)
最理想的是这样:
一,分段读入/写入,并返回进度;
二,放在一个线程里.
但是,VB6里多线程真的不好搞(至少我的本事还达不到让它稳定的程度.....)
只能实现第一条....
过段时间再搞吧.....
|
|
|
|
|