我有一個文件,我想以編程方式關閉該文件,由另一個進程使用。我想關閉一個文件
事情是我想從另一個進程中,無論使用哪一個,然後刪除它的文件釋放..無論如何要做到這一點編程? 我正在使用c#..
如何刪除此?
我已經做了這樣的代碼,
如果(File.Exists(文件路徑)) File.Delete(文件路徑);
刪除文件
我有一個文件,我想以編程方式關閉該文件,由另一個進程使用。我想關閉一個文件
事情是我想從另一個進程中,無論使用哪一個,然後刪除它的文件釋放..無論如何要做到這一點編程? 我正在使用c#..
如何刪除此?
我已經做了這樣的代碼,
如果(File.Exists(文件路徑)) File.Delete(文件路徑);
刪除文件
這取決於過程。您不必擁有使用該文件關閉其他進程的權利,並且這可能具有潛在的危險性。
您可以考慮使用http://msdn.microsoft.com/en-us/library/ms686714(VS.85).aspx一旦你知道它的手柄終止進程(使用P/Invoke來從C#訪問)
編輯:另請參閱以下問題,以幫助determind過程的把手鎖止你文件,Using C#, how does one figure out what process locked a file?
嘗試this。
儘管我不會推薦關閉其他進程的句柄,除非你真的知道這樣做的後果!
我不確定這是一個好主意......這取決於「其他」應用程序對文件做了什麼以及它是否會對系統或數據穩定性/完整性產生任何影響。
話雖如此,你也許可以通過脫殼到Sysinternals Handle之類的東西來獲得所需的功能,以獲取其他程序的身份並強制它通過任何必要的方式釋放該文件。
不過,我的首選選項是進入等待循環,直到文件被其他應用程序釋放,然後將其刪除。雖然這只是我。
- EDIT-- 如果有問題的文件在網絡共享上,這個想法會變得更加複雜 - 在這種情況下,您不知道哪個進程正在鎖定文件,因爲它可能不在您的計算機上。 (實際上,我不確定各種文件共享鎖文件如何使用 - 更復雜;))
您可能沒有權利這樣做,無論如何,您將得到一個異常拋出由你的代碼示例。以編程方式,在C#下,將會有很多pinvokes來獲取安全證書,並允許程序從另一個進程中掃描文件,使用進程注入來將進程自己的死手指從文件中解脫出來 - 這又回到了這個問題 - 爲什麼無論如何,你是否想要這樣做到另一個進程?
如果您不說我會說這是非常可疑的...您可能會在該進程中導致程序損壞(可能因爲他們自己的原因使用它),如果您嘗試過,最終會失敗,因爲該資源不再存在...
希望這會有所幫助, 最好的問候, 湯姆。
如果你的文件是文本文件,那麼你不需要刪除你的文件(退出代碼的過程是一個壞主意),而是你可以讓你的文本文件爲空。
if (File.Exists(filePath)){
File.WriteAllText(filePath, String.Empty);
}
相關:http://stackoverflow.com/questions/1977611/is-it-possible-to-bypass-a-file-lock-in-c-when-another-thread-process-is- unecess – 2010-02-11 12:57:21