Несколько пулевых точек из предыдущего ответа :
xxx@gmail.com
. Пользователь reply-to
, если вам нужны ответы, чтобы получить другой адрес. При попытке детерминировано очистить содержание Временной папки типа Файлов, Вы рискуете удалять файлы, которые используются другими процессами. Операционная система Windows обеспечивает инструменты, чтобы позволить пользователям удалять те файлы, когда доступное дисковое пространство объема достигает определенного порога.
Теперь, если можно решить, что после использования определенного временного файла, что он больше не будет необходим, тогда нет никакой оборотной стороны к удалению что определенный файл.
В.NET можно использовать TempFileCollection
класс для руководящего ряда временных файлов, которые будут очищены приложением (Обратите внимание, что это скорее скрыто в пространстве имен 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; } }
}
, Если Вы обязаны очищать временные файлы другого приложения, требуются некоторые средства общения с Вашим. Как минимум это должно быть в состоянии обеспечить семафор. Однако сложность выполнения этого больше, чем сложность просто наличия исходного приложения заботится о своих собственных файлах.
Я полагаю, что они будут удалены, когда пользователь выйдет из системы.
Назад в дни, когда люди выключали свои ПК каждый день, который был, вероятно, идеальным решением.
Теперь, люди могут потенциально пойти месяцы без того, чтобы выходить из системы, таким образом, это не может быть хорошая идея полагаться на это.
кроме того, если они выключают свою машину, не закрывая тогда файлы, не будет удален также.
Вы могли использовать наблюдателя файловой системы, который наблюдает файл, который Вы пишете, и ожидаете в течение некоторого периода неактивности (10 minuites, 1 час, 1 день, или что когда-либо) и затем удаляете файл.
, Который не будет работать на все все же. Некоторые программы могут иметь "открытый" файл, но не могли бы заблокировать базовый файл. Если бы это происходит, то у Вас не было бы способа знать, когда безопасно удалить файл.
Однако я думаю, что можно, вероятно, просто проигнорировать проблему. У большинства людей, вероятно, есть излишек пространства на жестком диске так или иначе, таким образом, они, вероятно, вероятно, не столкнутся с ним. Если они делают, я думаю, что Windows открывается диалоговое окно недостаточного пространства на диске, которое дает им опцию очистить их временный каталог, который решил бы проблему.
Обновление:
я думаю, что Windows Update перезапустит компьютер пользователя об один раз в месяц, таким образом, временные файлы должны будут быть очищены, когда это происходит.
нет никакой гарантии, что не будет проблем, но на практике я думаю, что это должно быть довольно редко.
Обновление 2:
Запрошенный комментарием, я пошел и на самом деле протестировал это, и похоже, что окна не удаляют временные файлы, когда пользователь выходит из системы. Однако я все еще говорю, что в случае OP, это не настоящая проблема. Когда это становится проблемой (потому что дисковое пространство является низким), Windows предложит пользователю удалять временные файлы.
У нас есть аналогичная проблема времени жизни файла - приложение (winforms) может извлекать документ из центрального хранилища репозитория для просмотра пользователем, но пользователь должен иметь возможность закрыть наше приложение без этого влияя на файл, который они просматривают. Из соображений безопасности файлы документов необходимо очистить, чтобы они не лежали слишком долго.
Решение, которое мы используем, - создать папку с именем на основе даты в изолированной области хранения пользователей и использовать ее в качестве сегодняшнего кеша. При закрытии и запуске приложения мы проверяем наличие устаревших папок кэша и удаляем их (и содержимое).
При использовании временных файлов в ASP.NET используйте событие PAGE_DISPOSED для удаления любых временных файлов, созданных вами на странице. В противном случае вы можете столкнуться с конфликтом с компонентами, которые не отпускаются до УТИЛИЗАЦИИ.
вы можете создать один временный файл, в который вы можете продолжать записывать имена файлов, созданные во время процесса, в конце обработки вы можете (предварительное условие - реализовать IDisposable и) удалить в Метод Disponse после завершения операции.
Другой способ - независимый от записи процесс, который выполняет очистку каждый интервал.
Прикрепите дату в конце файла и удалите в конце дня с этой датой, и процесс будет генерировать новые файлы с новой датой в конце.
одно хорошее предложение, данное divo tempfilecollection class.
надеюсь, что это поможет.
()
...()
интерпретируютсяopen
..., необходимо инкапсулировать URL с'
; o) – Whiler 19 October 2012 в 08:53