C 檢測檔案是否被其他程序占用的幾種方法

2021-06-20 14:08:54 字數 944 閱讀 1715

在.net中檢測是很好實現的 ,可以利用 異常處理機制:故意對檔案進行操作,如果丟擲異樣,則可以根據異常資訊判斷出是否被其它程序占用,常用的有:

1、try

2、_lopen(filen, of_readwrite | of_share_deny_none)  檢測返回值

3、try

第1,第3 可以通過丟擲的異常來判斷;

附上第2種方法的完整**如下:

c#判斷檔案是否被開啟占用

using system.io;

using system.runtime.interopservices;

[dllimport("kernel32.dll")]

public static extern intptr _lopen(string lppathname, int ireadwrite);

[dllimport("kernel32.dll")]

public static extern bool closehandle(intptr hobject);

public const int of_readwrite = 2;

public const int of_share_deny_none = 0x40;

public readonly intptr hfile_error = new intptr(-1);

private void button1_click(object sender, eventargs e)

intptr vhandle = _lopen(vfilename, of_readwrite | of_share_deny_none);

if (vhandle == hfile_error)

closehandle(vhandle);

messagebox.show("沒有被占用!");

}

檢視檔案是否被其他程序訪問

專案中寫了乙個穿網閘檔案傳輸程式,定期掃瞄指定資料夾,並將檔案傳輸至網閘對側。但在使用過程中發現部分檔案經常被截斷傳輸,實際上程式中對該問題已經做了處理,linux系統使用lsof命令可以直接插到該檔案當前有沒有被寫入,windows系統使用嘗試重新命名檔案方式來確定檔案有沒有被占用。但實際應用中在...

C 讀取被程序占用的檔案

最近所做的乙個專案中,需要實現乙個讀取日誌檔案的功能,開始我使用的讀取日誌檔案的方法如下 在讀取歷史日誌檔案時,沒有問題,但是在讀取當前正在寫的日誌檔案時,就出現問題了。出現以下錯誤 檔案 f autoupdater log logfile20090422.txt 正由另一程序使用,因此該程序無法訪...

C 讀取被程序占用的檔案

檔案 d log cargoabc logfilecargoabc.txt 正由另一程序使用,因此該程序無法訪問該檔案。logfilecargoabc.txt是乙個日誌檔案,不定時都可能由另外的程式對它進行日誌記錄寫入操作。今需要對日誌檔案讀取出來,顯示在日誌查詢裡,需要用到了io流。1 files...