2007 年 12 月
      1
2345678
9101112131415
16171819202122
23242526272829
3031   
上一年下一年   上一月下一月

站点统计
日志:516 篇
评论:331 篇
留言:31 篇
收藏夹:0 个书签
会员数:149 人

最新评论
上海地区广告伞太阳伞专业...
没附件了郁闷,还在的话麻...
已经发送到你的邮箱了,请...
写了一个进程间通讯的类....
行啊,二博客都一样
已经发送了附件到你的邮箱...
老马写的..可惜没的附件...
欢迎!
谢谢了。
第一次走进您的博客,^_...


如何复制一个正在使用的文件?(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里多线程真的不好搞(至少我的本事还达不到让它稳定的程度.....)

只能实现第一条....

过段时间再搞吧.....

随想 调用IE打开一个网站,并可关闭(VB6.0)

暂时没有评论