दिलचस्प पोस्ट
जावा में वर्तमान दिनांक / समय कैसे प्राप्त करें java.lang.IllegalArgumentException: अवैध <url-pattern> सर्वलेट मैपिंग में कोणीय और एसवीजी फिल्टर रन टाइम में व्यवस्थापक विशेषाधिकारों का अनुरोध करना मुझे कैसे पता है कि सहायताMapFragment का उपयोग करते समय मानचित्र का उपयोग करने के लिए तैयार है? एक्लिप्से में यूटीएफ -8 एन्कोडिंग का समर्थन कैसे करें मेनू बटन वाले उपकरणों पर अतिप्रवाह मेनू का उपयोग कैसे करें क्या मैं जावास्क्रिप्ट में एचटीएमएल विशेष वर्णों से बच सकता हूं? सभी खिड़कियों के शीर्ष पर जेफाइलक्लोसर लाना लॉक प्राप्त करने की कोशिश करते समय mysql 'डेडलॉक से बचने के लिए कैसे; लेनदेन को पुनः आरंभ करने का प्रयास करें ' मैं गूगल मानचित्र एपीआई V3 में पैनिंग कैसे सीमित कर सकता हूं? कैसे कंसोल.इन (stdin) को पुनः निर्देशित कर दिया गया है? एंड्रॉइड में मैं विश्व स्तर पर स्क्रीन अभिविन्यास कैसे बढ़ा सकता हूं? क्या java.util.Date समयक्षेत्र का उपयोग कर रहा है? क्या अजगर में बड़ी जेसन फाइलें लोड करने के लिए एक स्मृति कुशल और तेज तरीका है?

.NET का उपयोग करते हुए एक निर्देशिका में सबसे हाल की फ़ाइल को कैसे ढूंढें, और बिना पाशन?

मुझे सबसे हाल ही में संशोधित फाइल को एक निर्देशिका में खोजना होगा

मुझे पता है मैं एक फ़ोल्डर में प्रत्येक फ़ाइल के माध्यम से लूप कर सकता हूं और फाइल की तुलना कर सकता हूँ। File.GetLastWriteTime , लेकिन क्या बिना किसी पाशन के लिए यह बेहतर तरीका है?

वेब के समाधान से एकत्रित समाधान ".NET का उपयोग करते हुए एक निर्देशिका में सबसे हाल की फ़ाइल को कैसे ढूंढें, और बिना पाशन?"

इस जैसे किसी और के बारे में क्या राय है…

 var directory = new DirectoryInfo("C:\\MyDirectory"); var myFile = (from f in directory.GetFiles() orderby f.LastWriteTime descending select f).First(); // or... var myFile = directory.GetFiles() .OrderByDescending(f => f.LastWriteTime) .First(); 

यदि आप बार-बार खोज करना चाहते हैं, तो आप इस सुंदर कोड का उपयोग कर सकते हैं:

 public static FileInfo GetNewestFile(DirectoryInfo directory) { return directory.GetFiles() .Union(directory.GetDirectories().Select(d => GetNewestFile(d))) .OrderByDescending(f => (f == null ? DateTime.MinValue : f.LastWriteTime)) .FirstOrDefault(); } 

बस इसे निम्नलिखित तरीके से कहते हैं:

 FileInfo newestFile = GetNewestFile(new DirectoryInfo(@"C:\directory\")); 

और बस। निर्देशिका खाली है, तो एक FileInfo उदाहरण या null देता है।

उपरोक्त पहले एक पर विस्तार, यदि आप एक निश्चित पैटर्न के लिए खोज करना चाहते हैं तो आप निम्न कोड का उपयोग कर सकते हैं:

 string pattern = "*.txt" var dirInfo = new DirectoryInfo(directory); var file = (from f in dirInfo.GetFiles(pattern) orderby f.LastWriteTime descending select f).First(); 

एक गैर- LINQ संस्करण:

 /// <summary> /// Returns latest writen file from the specified directory. /// If the directory does not exist or doesn't contain any file, DateTime.MinValue is returned. /// </summary> /// <param name="directoryInfo">Path of the directory that needs to be scanned</param> /// <returns></returns> private static DateTime GetLatestWriteTimeFromFileInDirectory(DirectoryInfo directoryInfo) { if (directoryInfo == null || !directoryInfo.Exists) return DateTime.MinValue; FileInfo[] files = directoryInfo.GetFiles(); DateTime lastWrite = DateTime.MinValue; foreach (FileInfo file in files) { if (file.LastWriteTime > lastWrite) { lastWrite = file.LastWriteTime; } } return lastWrite; } /// <summary> /// Returns file's latest writen timestamp from the specified directory. /// If the directory does not exist or doesn't contain any file, null is returned. /// </summary> /// <param name="directoryInfo">Path of the directory that needs to be scanned</param> /// <returns></returns> private static FileInfo GetLatestWritenFileFileInDirectory(DirectoryInfo directoryInfo) { if (directoryInfo == null || !directoryInfo.Exists) return null; FileInfo[] files = directoryInfo.GetFiles(); DateTime lastWrite = DateTime.MinValue; FileInfo lastWritenFile = null; foreach (FileInfo file in files) { if (file.LastWriteTime > lastWrite) { lastWrite = file.LastWriteTime; lastWritenFile = file; } } return lastWritenFile; } 

यह थोड़ा देर हो चुकी है लेकिन …

आपका कोड list<FileInfo> lastUpdateFile = null; नहीं होगा, क्योंकि list<FileInfo> lastUpdateFile = null; और बाद में lastUpdatedFile.Add(file); इसलिए NullReference अपवाद फेंक दिया जाएगा। वर्किंग वर्जन होना चाहिए:

 private List<FileInfo> GetLastUpdatedFileInDirectory(DirectoryInfo directoryInfo) { FileInfo[] files = directoryInfo.GetFiles(); List<FileInfo> lastUpdatedFile = new List<FileInfo>(); DateTime lastUpdate = DateTime.MinValue; foreach (FileInfo file in files) { if (file.LastAccessTime > lastUpdate) { lastUpdatedFile.Add(file); lastUpdate = file.LastAccessTime; } } return lastUpdatedFile; } 

धन्यवाद

आप FileSystemWatcher के साथ नई फ़ाइल गतिविधि पर प्रतिक्रिया कर सकते हैं

ये एक ऐसा संस्करण है जो प्रत्येक उपनिर्देशिका से सबसे हालिया फ़ाइल प्राप्त करता है

 List<string> reports = new List<string>(); DirectoryInfo directory = new DirectoryInfo(ReportsRoot); directory.GetFiles("*.xlsx", SearchOption.AllDirectories).GroupBy(fl => fl.DirectoryName) .ForEach(g => reports.Add(g.OrderByDescending(fi => fi.LastWriteTime).First().FullName)); 
 private List<FileInfo> GetLastUpdatedFileInDirectory(DirectoryInfo directoryInfo) { FileInfo[] files = directoryInfo.GetFiles(); List<FileInfo> lastUpdatedFile = null; DateTime lastUpdate = new DateTime(1, 0, 0); foreach (FileInfo file in files) { if (file.LastAccessTime > lastUpdate) { lastUpdatedFile.Add(file); lastUpdate = file.LastAccessTime; } } return lastUpdatedFile; } 

मैं यह मेरे ऐप का एक गुच्छा है और मैं इस तरह एक कथन का उपयोग करता हूं:

  var inputDirectory = new DirectoryInfo("\\Directory_Path_here"); var myFile = inputDirectory.GetFiles().OrderByDescending(f => f.LastWriteTime).First(); 

यहां से आपके पास "इनपुट डायरेक्टरी" चर की निर्देशिका में सबसे हाल ही में सहेजी गई / जोड़ा / नवीनीकृत फाइल के लिए फ़ाइल नाम होगा। अब आप इसे एक्सेस कर सकते हैं और आप इसके साथ क्या चाहते हैं।

उम्मीद है की वो मदद करदे।

लघु और सरल संस्करण:

 new DirectoryInfo([directoryPath]).GetFiles().OrderByDescending(x => x.LastWriteTime).FirstOrDefault();