【转】如何复制一个正在使用的文件?(VB6.0)

2012-02-16 21:02

【转】如何复制一个正在使用的文件?(VB6.0)

刚刚在群里与别人聊到,使用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里多线程真的不好搞(至少我的本事还达不到让它稳定的程度.....)
原文地址:https://www.cnblogs.com/wuyifu/p/2765710.html