Dot-Net
使用後刪除臨時文件
我需要在我的 Windows Forms .NET 3.5 應用程序中處理一些臨時文件。這些文件是在一個外部應用程序中打開的,當然它可以執行比我自己的程序更長的時間。
是否有任何最佳做法可以確保隨時清理這些臨時文件,以避免使用者的硬碟充滿不再需要的“垃圾”文件?或者甚至 Windows 會自動處理這個問題嗎?
一個很好的例子是任何郵件客戶端:當您在任何應用程序中打開一個附件時,它通常被寫入一個打開的臨時文件。有沒有辦法弄清楚這些文件如何管理清理?
使用 Google 向我展示了許多清理和調整工具來手動清理臨時目錄,但我不想強迫使用者這樣做。:-)
在 .NET 中,您可以使用
[TempFileCollection](http://msdn.microsoft.com/en-us/library/system.codedom.compiler.tempfilecollection.aspx)該類來管理一組要由您的應用程序清理的臨時文件(請注意,它相當隱藏在 CodeDom 命名空間中)。顯然,您不能刪除任何不屬於您自己的文件,因為這些文件可能仍被另一個應用程序打開(刪除它們可能會導致嚴重問題)。
清理臨時文件的責任應該在創建它們的應用程序上。這很容易。我使用一個看起來像這樣的類:
public class TempFile : IDisposable { public TempFile() { this.path = System.IO.Path.GetTempFileName(); } public void Dispose() { File.Delete(path); } private string path; public string Path { get { return path; } } }如果您需要清理另一個應用程序的臨時文件,它需要一些與您的通信的方法。至少它應該能夠提供信號量。然而,這樣做的複雜性大於讓原始應用程序處理自己的文件的複雜性。