Forum
merhabalar ;
C:\FOLRDER\DENEME ve C:\FOLDER\DENEME2 klasorlerinde birer adet deneme.txt dosyası var
ben oluşturma tarihi eski olanı silmek istiyorum ,aşaya kadar gelebildim ama ilerleyemedim , şimdiden teşekkürler .
var dllfile="deneme.txt";
var info = new DirectoryInfo(appFolder);
foreach (var file in info.GetFiles("*.*", SearchOption.AllDirectories).Where(x => x.Name == dllfile))
{
file.Delete();
}
OrderBy ile sıralayıp ilk elemanı almanız yeterlidir.
Eğer tek bir dosyayı silmek istiyorsanız döngüye gerek yok, aşağıdaki kodu deneyin;
var info = new DirectoryInfo(Path.GetTempPath());
var file = info.GetFiles("*.*", SearchOption.AllDirectories)).Where(x => x.Name == dllfile).OrderBy(x=>x.CreationTime).FirstOrDefault();
file.Delete();
hocam burda bir kontrol yazmmaız lazım hem dosya yoksa silme metodu patlamasın hemde tek dosya varsa silmesi
Amacım dosyada birden fazla var ise eski olanları silmek .
Aşağıdaki şekilde deneyin;
var di = new DirectoryInfo(@"C:\Test");
// Dosya uzantısı .txt olan tüm dosyaları alın ve oluşturma tarihine göre sıralayın
// NOT: Eğer bu dizinde silmek istemediğiniz farklı txt dosyalarıda varsa dosya adını filtreleyin örnek: Where(x => x.Name.Contains("deneme"))!
var dosyalar = di.GetFiles("*.*", SearchOption.AllDirectories).Where(x => x.Extension == ".txt").OrderBy(x => x.CreationTime).ToList();
// Eğer klasörde birden fazla dosya varsa
if (dosyalar.Count > 1)
{
// sadece en eski tarihli dosyayı silmek için;
dosyalar.FirstOrDefault().Delete();
// en yeni tarihli dosya hariç tümünü silmek için
dosyalar.Remove(dosyalar.LastOrDefault());
for (var i = 0; i < dosyalar.Count; i++)
{dosyalar[i].Delete();}
}
hocam peki bu filtre sonucu bulunan dosyayı bulundugu dizin ile birlikte nasıl silebiliriz .
Array.ForEach(di.GetDirectories(), directoryInfo => directoryInfo.Delete(true));