C 刪除或修改檔案時提示檔案被占用

2021-08-30 15:40:44 字數 2136 閱讀 1571

c# 中使用image.fromfile(string path)後,提示該檔案正在被另一程序使用***的問題,是因為對應的檔案在一直呼叫 ,其生成的image物件被disponse()前都不會被解除鎖定,這就造成了此問題,就是在這個圖形被解鎖前無法對影象進行操作(比如刪除,修改等操作)。

解決方案:此問題可以使用下面三個方法解決問題.

system.drawing.image image = system.drawing.image.fromfile(filepath);

system.drawing.bitmap bmp = new system.drawing.bitmap(image);

image.dispose();

system.drawing.image img = system.drawing.image.fromfile(filepath);

system.drawing.image bmp = new system.drawing.bitmap(img.width, img.height, img.pixelformat);

system.drawing.graphics g = system.drawing.graphics.fromimage(bmp);

g.drawimage(img, 0, 0);

g.flush();

g.dispose();

img.dispose();

system.io.filestream fs = new system.io.filestream(filepath, filemode.open, fileaccess.read);

int bytelength = (int)fs.length;

byte filebytes = new byte[bytelength];

fs.read(filebytes, 0, bytelength);

//檔案流關閉,檔案解除鎖定

fs.close(); memorystream mstream = new memorystream(filebytes);

image image = image.fromstream(mstream);

mstream.close();

//因為fromstream方法引數應用的流必須一直保持開啟,故而**中有乙個檔案流是向memeorystream流的轉換,從而可以關閉檔案流,保持memorystream流的開啟狀態。在不用mstream時關閉。

public void wipefile(string filename, int timestowrite)

}// 清空檔案

inputstream.setlength(0);

// 關閉檔案流

inputstream.close();

// 清空原始日期需要

datetime dt = new datetime(2037, 1, 1, 0, 0, 0);

file.setcreationtime(filename, dt);

file.setlastaccesstime(filename, dt);

file.setlastwritetime(filename, dt);

// 刪除檔案

file.delete(filename);}}

catch (exception)

}process tool = new process();

tool.startinfo.filename = 「handle.exe」;//占用檔案的程序

tool.startinfo.arguments = filename+" /accepteula";

tool.startinfo.useshellexecute = false;

tool.startinfo.redirectstandardoutput = true;

tool.start();

tool.waitforexit();

string outputtool = tool.standardoutput.readtoend();

string matchpattern = @"(?<=\s+pid:\s+)\b(\d+)\b(?=\s+)";

foreach(match match in regex.matches(outputtool, matchpattern))

C 刪除檔案目錄或檔案

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!刪除檔案和目錄 public class cleaner private static void cleanfiles string dir else else cleanfiles subdir if 0 files.length else di...

某個檔案或目錄無法刪除時

unlocker unlocker是乙個免費的右鍵擴充工具,使用者在安裝後,它便能整合於滑鼠右鍵的操作當中,當使用者發現有某個檔案或目錄無法刪除時,只要按下滑鼠右鍵中的 unlocker 那麼程式馬上就會顯示出是哪一些程式占用了該目錄或檔案,接著只要按下彈出的視窗中的 unlock 就能夠為你的檔案...

c 檔案被占用如何移除 檔案被占用,

檔案被占用,求助 有兩個程式a和b,在a程式的登入窗體啟動b程式 定時自動上傳資料 如果資料自動上傳成功之後,再在a程式中點手工上傳就出出現檔案正在被另一程式 b 占用,在b程式中上傳完之後已經關閉檔案了,怎麼還會出現這個錯誤?求解 a程式frmlogion 啟動自動上傳程式 if file.exi...