文件正由另一進程使用,該進程無法訪問該文件,解決方法


異常提示:
“文件正由另一進程使用,該進程無法訪問該文件”。
打開一個文件后,嘗試重新打開一次該文件,或者打開該文件后想對該文件進行其他操作的時候,就容易出現這個錯誤提示。
通常造成該錯誤的原因是構造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;

則不會再繼續占用該文件。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM