Excluir arquivos da pasta com mais de 4 dias
-
21-09-2019 - |
Pergunta
Gostaria de executar um cronômetro a cada 5 horas e excluir os arquivos da pasta com mais de 4 dias. Você poderia por favor com o código de exemplo?
Solução
Como não foi mencionado, eu recomendaria usar um System.Threading.Timer
Para algo assim. Aqui está um exemplo de implementação:
System.Threading.Timer DeleteFileTimer = null;
private void CreateStartTimer()
{
TimeSpan InitialInterval = new TimeSpan(0,0,5);
TimeSpan RegularInterval = new TimeSpan(5,0,0);
DeleteFileTimer = new System.Threading.Timer(QueryDeleteFiles, null,
InitialInterval, RegularInterval);
}
private void QueryDeleteFiles(object state)
{
//Delete Files Here... (Fires Every Five Hours).
//Warning: Don't update any UI elements from here without Invoke()ing
System.Diagnostics.Debug.WriteLine("Deleting Files...");
}
private void StopDestroyTimer()
{
DeleteFileTimer.Change(System.Threading.Timeout.Infinite,
System.Threading.Timeout.Infinite);
DeleteFileTimer.Dispose();
}
Dessa forma, você pode executar seu código de exclusão de arquivos em um serviço do Windows com um incômodo mínimo.
Outras dicas
DateTime CutOffDate = DateTime.Now.AddDays(-4)
DirectoryInfo di = new DirectoryInfo(folderPath);
FileInfo[] fi = di.GetFiles();
for (int i = 0; i < fi.Length; i++)
{
if (fi[i].LastWriteTime < CutOffDate)
{
File.Delete(fi[i].FullName);
}
}
Você pode substituir LastWriteTime
Propriedade de outra coisa, é exatamente isso que eu uso ao limpar um cache de imagem em um aplicativo que tenho.
EDITAR:
Embora isso não inclua a parte do timer ... Vou deixar você descobrir essa parte. Um pouco de pesquisador deve mostrar várias maneiras de fazê -lo em um cronograma.