Нет встроенного метода для каталогов, насколько я знаю, но вы можете легко имитировать это поведение, создав одноразовый класс и конструкцию using
, которая гарантирует, что папка будет удалена, даже если приложение неожиданно завершится :
public class TempFolder : IDisposable
{
public string RootPath { get; private set; }
public TempFolder()
{
RootPath = Path.GetTempPath();
}
public void Dispose()
{
Directory.Delete(RootPath, true);
}
}
Затем в вашем приложении:
общественный статический класс MyApp {
public static void Main(string[] args)
{
using(var tempFolder = new TempFolder())
{
// Do my stuff using tempFolder.RootPath as base path to create new files
}
// temporal directory will be deleted when we reach here
// even if an exception is thrown! :)
}
}
Обратите внимание, что это упрощенный подход; остерегайтесь заблокированных файлов внутри директории во времени, что может привести к Directory.Delete
к сбою операции
Кроме того, некоторые в некоторых случаях метод Dispose
нельзя было назвать:
- Некоторые неуловимым исключения, как
StackOverflowException
и OutOfMemoryException
- Исключено исключенное исключение в другой теме, порожденной вашей заявкой
- Процесс убит
BTW Я использую аналогичный подход для обработки некоторых тестов NUnit, которые должны работать с файлами, и пока он работает нормально.
Возможный дубликат [Создание временного каталога в Windows?] (Http: // stackoverflow.com/questions/278439/create-a-tempor-directory-in-windows) – Mithrandir
Mithrandir, я не думаю, что это дубликат, я не спрашиваю, как создать временный каталог (который я могу сделать), но если существует встроенный метод привязки времени жизни каталога к времени жизни приложения. – Shimrod
Вы всегда можете положить его на моно и использовать докер-контейнер. Это примерно так же временно, как и получается. –