⽂件正由另⼀进程使⽤,该进程⽆法访问该⽂件,解决⽅法异常提⽰:
“⽂件正由另⼀进程使⽤,该进程⽆法访问该⽂件”。
打开⼀个⽂件后,尝试重新打开⼀次该⽂件,或者打开该⽂件后想对该⽂件进⾏其他操作的时候,就容易出现这个错误提⽰。
通常造成该错误的原因是构造System.IO.FileStream时参数设置有问题
⼀般习惯直接使⽤:
FileStream fs = new FileStream(fileName, FileMode.Open)
这个⽅法打开⽂件的时候是以只读共享的⽅式打开的,但若此⽂件已被⼀个拥有写权限的进程打开的话,就⽆法读取了,
因此需要使⽤
FileStream fs = new FileStream(fileName, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
设置⽂件共享⽅式为读写:FileShare.ReadWrite,这样的话问题就解决了。
将图⽚⽂件加载到Picturebox中后若要删除或覆盖该图⽚⽂件也会出现上⾯异常提⽰
pictureBox1.Image = Image.FromFile(sFile);//⽤此种⽅式加载图⽚,关闭页⾯后该路径的⽂件可能会仍被线程占⽤,导致⽆法删除、覆盖 pictureBox1.ImageLocation = sFile;及下⾯⽅式
FileStream fs = new FileStream(sFile, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
byte[] bytes = new byte[fs.Length];
fs.Read(bytes, 0, bytes.Length);
fs.Close();
MemoryStream ms = new MemoryStream(bytes);
无法打开文件
Bitmap img = new Bitmap(ms);
pictureBox1.Image = img;
则不会再继续占⽤该⽂件。