如何复制已使用的文件

时间:2016-01-02 08:46:22

标签: c# winforms copy-paste

我在.mdf文件夹中有两个文件(.ldfApp_Data)。现在我想复制这两个文件,并且需要在运行应用程序时粘贴到备份文件夹中。但是我收到了一个错误:

  

进程无法访问文件'D:\ App_Data \',因为它是   被另一个进程使用。

这些是我一直在使用的代码

string dir = Directory.GetDirectories(@"D:\","App_data").FirstOrDefault();
string targetPath = @"D:\Back_up_PayRoll\";

if (System.IO.Directory.Exists(dir))
{
    string[] files = System.IO.Directory.GetFiles(dir);

    if (!Directory.Exists(targetPath))
        Directory.CreateDirectory(targetPath);

    foreach (string s in files)
    {
        var fileName = System.IO.Path.GetFileName(s);

        var destFile = System.IO.Path.Combine(targetPath, fileName);
        System.IO.File.Copy(s, destFile, true);
        MessageBox.Show("BACK-UP Done..");
    }
}

2 个答案:

答案 0 :(得分:0)

如果在系统上可用,您可以使用Volume Shadow Copy Service

使用快照

从C#开始,有一个包装COM接口的方便AlphaVSS库,但您可以直接实现它。

如果VSS不可用,那么运气不好,无法绕过文件锁

PS:当然,这非常简单File.Copy

答案 1 :(得分:0)

如果没有先断开连接,您无法以任何方式访问MDF文件。

最好的办法是使用SQL备份它,或关闭应用程序并通过运行BAT文件来复制它