2012-07-09 23 views
7

Son değiştirilen 5 dosyaların dosya konumunu Array kullanarak bir dizinden saklayabilmemin bir yolu var mı? Ben eki olarak e-posta adresine birden fazla dosya göndermek için Array kullanacağınızC#: Bir dizinden 5 yeni (son değiştirilen) dosyayı edinin

DateTime lastHigh = new DateTime(1900,1,1); 
string highDir; 
foreach (string subdir in Directory.GetDirectories(path)){ 
    DirectoryInfo fi1 = new DirectoryInfo(subdir); 
    DateTime created = fi1.LastWriteTime; 

    if (created > lastHigh){ 
     highDir = subdir; 
     lastHigh = created; 
    } 
} 

:

Şu anda son dosyayı almak için aşağıdaki aşağıdaki kodları kullanıyorum.

GÜNCELLEME Şu anda 1 dakika sonra son değişiklik dosyaları almak için aşağıdaki kodları kullanıyorum

:

string myDirectory = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.MyPictures), 
        "Test Folder"); 
var directory = new DirectoryInfo(myDirectory); 
DateTime from_date = DateTime.Now.AddMinutes(-1); 
DateTime to_date = DateTime.Now; 
var files = directory.GetFiles().Where(file => file.LastWriteTime >= from_date && file.LastWriteTime <= to_date); 

Ben files

+1

Dosya tanımının sonunda ".ToArray()" dosyasına mı ihtiyacınız var? yani 'var files = dizin.GetFiles(). Burada (dosya => dosya.LastWriteTime> = from_date && file.LastWriteTime <= to_date) .ToArray(); ' – Michael

+1

@Michael Hatayı alıyorum." Türünü dolaylı olarak dönüştüremiyorum " string 'to' System.IO.FileInfo '" – abramlimpin

+1

Bir yoldan' FileInfo' nesnesi oluşturmanız gerekir. Uygun yapıcıyı kullanın, 'yeni FileInfo (yol)' –

cevap

19
gelen dosya adları listesine kaydetmek istediğiniz

Bunu yapmak için genel bir yol aşağıda açıklanmıştır:

Directory.GetFiles(path) 
      .Select(x => new FileInfo(x)) 
      .OrderByDescending(x => x.LastWriteTime) 
      .Take(5) 
      .ToArray() 

Kod örnekleriniz farklı görevlerde çalışıyormuş gibi göründüğünden, bunun tam olarak ne istediğinden şüpheleniyorum, ancak genel vakasında, bu, sorularınızın isteklerinin başlığını yapar.

+0

Teşekkür ederiz! Bu benim problemimi çözüyor! – abramlimpin

+0

En son değiştirilen Dizini nasıl aynı şekilde alabilirim? – VarunJi

+2

Bu yanıt çalışırken, http://stackoverflow.com/questions/1179970/c-sharp-find-most-recent-file-in-dir adresindeki yanıtın daha iyi olabileceğini düşünüyorum. – newman

1

Dizindeki tüm dosyaların tam dosya yollarının bir string dizisini istediğiniz gibi geliyor.

Zaten sahip Verilen sizin FileInfo enumerable, bunu yapabilirsiniz: Sadece dosya adlarını isteseydi,

var filenames = files.Select(f => f.FullName).ToArray(); 

Name ile FullName değiştirin.

İlgili konular