我搜索了很多关于这个例外的解决方案,但没有任何结果。这是我的代码,在以下行抛出异常:
BinaryWriter BW = new BinaryWriter(FI.Open(FileMode.Open));
注意,异常不是每次都引发的。我知道这很奇怪。有人知道吗?
FileInfo FI = new FileInfo("e:\cc.accdb");
if (FI.Exists)
FI.Delete();
GC.Collect();
FI.Create();
byte[] bb = { 54, 87, 98, 57, 65 };
BinaryWriter BW = new BinaryWriter(FI.Open(FileMode.Open));
BW.Write(bb);
我猜是因为您没有关闭文件的句柄。您需要在处理完句柄后释放它,否则它将持久化。
将Writer对象包装在using
块中,以便在完成处理此操作时将其释放。如果不是你的应用程序对该文件有句柄,运行procmon查看哪个进程对该特定文件有锁。
如果你没有Process Monitor,这里有一个下载的链接。这是一个无价的工具,如果你不需要它……div。
如果你把代码改成这样,它就可以工作了:
string path = "e:\cc.accdb";
byte[] bb = { 54, 87, 98, 57, 65 };
BinaryWriter BW = new BinaryWriter(File.Open(path, FileMode.Create));
BW.Write(bb);