3 개월 이상 된 특정 디렉터리의 파일을 삭제하는 방법을 알고 싶습니다 (C # 사용).하지만 날짜 기간이 유연 할 수 있다고 생각합니다.
명확하게 말하면, 90 일보다 오래된 파일을 찾고 있습니다. 즉, 90 일 이내에 생성 된 파일은 보관해야하고 다른 파일은 모두 삭제해야합니다.
답변
이런 식으로 할 수 있습니다.
using System.IO;
string[] files = Directory.GetFiles(dirName);
foreach (string file in files)
{
FileInfo fi = new FileInfo(file);
if (fi.LastAccessTime < DateTime.Now.AddMonths(-3))
fi.Delete();
}
답변
다음은 1 줄짜리 람다입니다.
Directory.GetFiles(dirName)
.Select(f => new FileInfo(f))
.Where(f => f.LastAccessTime < DateTime.Now.AddMonths(-3))
.ToList()
.ForEach(f => f.Delete());
답변
LINQ를 과도하게 사용하려는 사람들을 위해.
(from f in new DirectoryInfo("C:/Temp").GetFiles()
where f.CreationTime < DateTime.Now.Subtract(TimeSpan.FromDays(90))
select f
).ToList()
.ForEach(f => f.Delete());
답변
다음은 디렉토리에서 파일 생성 시간을 가져오고 3 개월 전에 생성 된 파일을 찾는 방법에 대한 스 니펫입니다 (정확히 90 일 전).
DirectoryInfo source = new DirectoryInfo(sourceDirectoryPath);
// Get info of each file into the directory
foreach (FileInfo fi in source.GetFiles())
{
var creationTime = fi.CreationTime;
if(creationTime < (DateTime.Now- new TimeSpan(90, 0, 0, 0)))
{
fi.Delete();
}
}
답변
System.IO.File 클래스 의 GetLastAccessTime 속성이 도움이 될 것입니다.
답변
기본적으로 Directory.Getfiles (Path)를 사용하여 모든 파일 목록을 가져올 수 있습니다. 그 후 목록을 반복하고 Keith가 제안한대로 GetLastAccessTim ()을 호출합니다.
답변
그런 것
foreach (FileInfo file in new DirectoryInfo("SomeFolder").GetFiles().Where(p => p.CreationTime < DateTime.Now.AddDays(-90)).ToArray())
File.Delete(file.FullName);