我有以下代码用于复制文件:
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
阻止。
答案 0 :(得分:1)
如果您在关闭文件后尝试重新打开该文件,系统仍有可能认为该文件是打开的,因为它实际上是。
一个典型的原因是病毒扫描程序保持文件打开以确保它不被感染,这在后台发生,并且可能在您自己关闭文件后继续运行。
答案 1 :(得分:0)
可能是因为您没有关闭文件。
BTW为什么不用File.Copy
?