手抄报 安全手抄报 手抄报内容 手抄报图片 英语手抄报 清明节手抄报 节约用水手抄报

vb.net 如何复制一个正在使用的文件

时间:2024-10-27 22:36:06

如果文件被其它进程以独占方式锁定,那么捂执涡扔使用普通的文件复制方法就会出现错误:"操作无法完成,因为文件在xxx中打开,请关闭文件再重试”。对于这种正在使用中的文件,使用VB.NET内建的揍茏壅混文件复制方法,也可能会出现类似的错误,那有没有办法解决这个问题呢?本文以实例方法说明如何在VB.NET中实现复制一个正在使用的文件。

vb.net 如何复制一个正在使用的文件

工具/原料

VS.NET 2017

1、用资源管理器重现问题SQL Server数据库文件会被SQL Server进程独占锁定,在资源管理器中复制正在使用中的SQL Server数据库文件会出现异常。

vb.net 如何复制一个正在使用的文件
vb.net 如何复制一个正在使用的文件

2、新建一个VB.NET工程在VS.NET中新建一个的WinForm工程,只有一个Form,Form上有两个按钮:Button1和Button2。

vb.net 如何复制一个正在使用的文件

3、用VB.NET中常规的文件复制方法重现问题双击Button1添加如下代码,运行后会出现下图所示的异常。Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click FileCopy("D:\Test\demo.mdf","D:\Test\demo1.mdf") End Sub

vb.net 如何复制一个正在使用的文件

4、如何复制正在使用中的文件呢?如果要复制正在使用中的文件,需要使用到VSS(卷影拷贝服务)技术,可以自行百度:VSS 卷影拷贝服务,了解这项技术的原理。

vb.net 如何复制一个正在使用的文件

5、在VB.NET中使用VSS技术百度搜索下载AlphaVSS和AlphaFS两个开源项目的相关文件,在VB.NET工程中添加如下引用引用。关键字如下:AlphaVSS site:alphavss.alphaleonis.comAlphaFS site:alphafs.alphaleonis.com

vb.net 如何复制一个正在使用的文件
vb.net 如何复制一个正在使用的文件

6、添加VSS文件复制代码双击Button2添加如下代码,运行后就可以正常复制了。 Private Sub Button2_Click(sender As Object, e As Eve荏鱿胫协ntArgs) Handles Button2.Click Dim sourceFile,destFile As String sourceFile="D:\Test\demo.mdf" destFile="D:\Test\demo1.mdf" using vss as new VssBackup vss.Setup(Path.GetPathRoot(sourceFile)) File.Copy(vss.GetSnapshotPath(sourceFile), destFile) End Using End Sub

vb.net 如何复制一个正在使用的文件

7、下载测试工程代码测试工程代码共享在如下位置,可以自行下来测试。下载路径:http://pan.baidu.com/s/1o8Lv7U6

vb.net 如何复制一个正在使用的文件
© 手抄报圈