2012-07-09 13 views
7

से 5 नवीनतम (अंतिम बार संशोधित) फ़ाइलों जाओ वहाँ एक रास्ता मैं Array का उपयोग कर एक निर्देशिका से 5 अंतिम बार संशोधित फ़ाइलों की फ़ाइल स्थान स्टोर कर सकते हैं है?सी #: एक निर्देशिका

मैं वर्तमान में नीचे निम्नलिखित कोड का उपयोग कर रहा हूँ पिछले फ़ाइल प्राप्त करने के लिए:

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

मैं अनुलग्नक के रूप में एक ईमेल पता करने के लिए एक से अधिक फ़ाइलों को भेजने के लिए Array का उपयोग किया जाएगा।

अद्यतन

मैं वर्तमान में नीचे कोड का उपयोग कर रहा 1 मिनट के बाद अंतिम बार संशोधित फ़ाइलें प्राप्त करने:

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

मैं फ़ाइल नामों की सूची files

+1

तुम सिर्फ फाइलों परिभाषा के अंत पर ".ToArray()" की आवश्यकता होगी, कर रहे हैं? यानी 'वर फ़ाइलों = directory.GetFiles() जहां (फ़ाइल => file.LastWriteTime> = FROM_DATE && file.LastWriteTime <= TO_DATE) .ToArray();।' – Michael

+1

@Michael मैं त्रुटि "परोक्ष प्रकार कनवर्ट नहीं कर सकता मिलती रहती है ' स्ट्रिंग 'टू' System.IO.FileInfo '" – abramlimpin

+1

आपको पथ से' FileInfo' ऑब्जेक्ट बनाना होगा। उचित कन्स्ट्रक्टर का उपयोग करें, 'नया फाइलइन्फो (पथ) ' –

उत्तर

19
से आ रही करने के लिए संग्रहीत करना चाहते हैं

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

यहाँ एक सामान्य तरीके से LINQ के साथ ऐसा करना है

मुझे लगता है यह काफी आप क्या चाहते हैं नहीं है के बाद से अपने कोड उदाहरण विभिन्न कार्यों पर काम करने लगते हैं, लेकिन सामान्य मामले में, यह है कि क्या आपके सवाल का अनुरोध के शीर्षक करना होगा।

+0

धन्यवाद! यह मेरी समस्या हल करता है! – abramlimpin

+0

मैं वैसे ही सबसे पुरानी संशोधित निर्देशिका कैसे प्राप्त कर सकता हूं? – VarunJi

+2

हालांकि यह उत्तर काम करता है, मुझे लगता है कि http://stackoverflow.com/questions/1179970/c-sharp-find-most-recent-file-in-dir पर उत्तर बेहतर हो सकता है। – newman

1

ऐसा लगता है कि आप एक निर्देशिका में सभी फाइलों से भरा filepaths के string सरणी चाहते हैं।

को देखते हुए आपके पास पहले से अपने FileInfo गणनीय, तो आप ऐसा कर सकते हैं:

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

तुम सिर्फ फ़ाइल नाम चाहता था, तो Name साथ FullName बदलें।

संबंधित मुद्दे