复制文件,文件未处理

时间:2012-09-27 09:47:57

标签: c# io

我有以下代码用于复制文件:

var copedFile = ConfigurationManager.AppSettings["PathToFirebirdDB"] + ".001";

using (var inputFile = new FileStream( ConfigurationManager.AppSettings["PathToFirebirdDB"],
        FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
{
    using (var outputFile = new FileStream(copedFile, FileMode.Create))
    {
        var buffer = new byte[0x10000];
        int bytes;

        while ((bytes = inputFile.Read(buffer, 0, buffer.Length)) > 0)
        {
            outputFile.Write(buffer, 0, bytes);
        }
    }
}

这段代码只运行一次。下次我收到以下消息:

 The process cannot access the file 'D:\Programs\IBExpert\db.fdb.001' because it is being used by another process. System.IO.IOException: The process cannot access the file 'D:\Programs\IBExpert\db.fdb.001' because it is being used by another process.

为什么呢?有using阻止。

2 个答案:

答案 0 :(得分:1)

如果您在关闭文件后尝试重新打开该文件,系统仍有可能认为该文件是打开的,因为它实际上是。

一个典型的原因是病毒扫描程序保持文件打开以确保它不被感染,这在后台发生,并且可能在您自己关闭文件后继续运行。

答案 1 :(得分:0)

可能是因为您没有关闭文件。

BTW为什么不用File.Copy