Forum

Linq ile tarihi en ...
 
Bildirimler
Hepsini Temizle

Linq ile tarihi en küçük olan dosyayı silmek

6 Yazılar
2 Üyeler
0 Reactions
599 Görüntüleme
(@sinemerkan)
Gönderiler: 234
Reputable Member
Konu başlatıcı
 

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();

 

}

 
Gönderildi : 01/01/2017 20:31

(@volkanalkilic)
Gönderiler: 137
Estimable Member
 

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();

 
Gönderildi : 01/01/2017 20:50

(@sinemerkan)
Gönderiler: 234
Reputable Member
Konu başlatıcı
 

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 .

 
Gönderildi : 02/01/2017 01:02

(@volkanalkilic)
Gönderiler: 137
Estimable Member
 

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();}
}

 
Gönderildi : 02/01/2017 01:16

(@sinemerkan)
Gönderiler: 234
Reputable Member
Konu başlatıcı
 

hocam peki bu filtre sonucu bulunan dosyayı bulundugu dizin ile birlikte nasıl silebiliriz .

 
Gönderildi : 02/01/2017 04:21

(@volkanalkilic)
Gönderiler: 137
Estimable Member
 

Array.ForEach(di.GetDirectories(), directoryInfo => directoryInfo.Delete(true));

 
Gönderildi : 02/01/2017 13:06

Paylaş: