Nếu bạn muốn sử dụng lại các tệp tạm thời của mình, ví dụ: mở \ close \ read \ write \ etc, sau đó xóa chúng ở mức tải xuống AppDomain có thể hữu ích.
Điều này có thể được sử dụng kết hợp với việc đặt các tệp tạm thời trong thư mục con nổi tiếng của vị trí tạm thời và đảm bảo rằng thư mục bị xóa khi khởi động ứng dụng để đảm bảo việc đóng cửa không được quan tâm.
Ví dụ cơ bản về kỹ thuật (với xử lý ngoại lệ được xóa xung quanh xóa trong ngắn gọn). Tôi sử dụng kỹ thuật này trong các bài kiểm tra đơn vị dựa trên tệp mà nó có ý nghĩa và hữu ích.
public static class TempFileManager
{
private static readonly List<FileInfo> TempFiles = new List<FileInfo>();
private static readonly object SyncObj = new object();
static TempFileManager()
{
AppDomain.CurrentDomain.DomainUnload += CurrentDomainDomainUnload;
}
private static void CurrentDomainDomainUnload(object sender, EventArgs e)
{
TempFiles.FindAll(file => File.Exists(file.FullName)).ForEach(file => file.Delete());
}
public static FileInfo CreateTempFile(bool autoDelete)
{
FileInfo tempFile = new FileInfo(Path.GetTempFileName());
if (autoDelete)
{
lock (SyncObj)
{
TempFiles.Add(tempFile);
}
}
return tempFile;
}
}
Nguồn
2010-07-13 23:15:29
Hãy cẩn thận với những kẻ đánh bóng. Có thể hệ thống sẽ khóa một tệp tạm thời vì bất kỳ lý do gì và việc xóa của bạn sẽ không thành công trong quá trình vứt bỏ. Bạn vẫn sẽ cần phải loại bỏ chúng ở một số điểm ít nhất bạn có một loạt các zombie trên hệ thống tập tin của bạn. – diadem