मेरे पास एक फ़ोल्डर है जिसमें कई फाइलें हैं। क्या उनकी निर्माण तिथि / समय के अनुसार निर्देशिका में फ़ाइल नाम प्राप्त करने का कोई आसान तरीका है?
यदि मैं उपयोग करता हूं Directory.GetFiles(), तो यह उनके फ़ाइल नाम द्वारा छांटी गई फाइलों को लौटाता है।
मेरे पास एक फ़ोल्डर है जिसमें कई फाइलें हैं। क्या उनकी निर्माण तिथि / समय के अनुसार निर्देशिका में फ़ाइल नाम प्राप्त करने का कोई आसान तरीका है?
यदि मैं उपयोग करता हूं Directory.GetFiles(), तो यह उनके फ़ाइल नाम द्वारा छांटी गई फाइलों को लौटाता है।
जवाबों:
यह आपके लिए काम कर सकता है।
using System.Linq;
DirectoryInfo info = new DirectoryInfo("PATH_TO_DIRECTORY_HERE");
FileInfo[] files = info.GetFiles().OrderBy(p => p.CreationTime).ToArray();
foreach (FileInfo file in files)
{
// DO Something...
}
यदि आप LINQ का उपयोग नहीं करना चाहते हैं
// Get the files
DirectoryInfo info = new DirectoryInfo("path/to/files"));
FileInfo[] files = info.GetFiles();
// Sort by creation-time descending
Array.Sort(files, delegate(FileInfo f1, FileInfo f2)
{
return f2.CreationTime.CompareTo(f1.CreationTime);
});
@jing: "DirectoryInfo समाधान बहुत तेज़ है तो यह (विशेष रूप से नेटवर्क पथ के लिए)"
मैं इसकी पुष्टि नहीं कर सकता। ऐसा लगता है जैसे Directory.GetFiles किसी फ़ाइल सिस्टम या नेटवर्क कैश को ट्रिगर करता है। पहले अनुरोध में थोड़ा समय लगता है, लेकिन निम्नलिखित अनुरोध बहुत तेज़ होते हैं, भले ही नई फाइलें जोड़ी गई हों। अपने परीक्षण में मैंने एक Directory.getfiles और एक जानकारी की। एक ही पैटर्न के साथ GGFiles और दोनों समान रूप से चलते हैं
GetFiles done 437834 in00:00:20.4812480
process files done 437834 in00:00:00.9300573
GetFiles by Dirinfo(2) done 437834 in00:00:20.7412646
यदि प्रदर्शन एक समस्या है, तो आप MS_DOS में इस कमांड का उपयोग कर सकते हैं:
dir /OD >d:\dir.txt
यह आदेश ** d: ** रूट में dir.txt फ़ाइल जनरेट करता है , जिसमें सभी फ़ाइलें दिनांक के अनुसार क्रमबद्ध हैं। और फिर अपने कोड से फाइल को पढ़ें। इसके अलावा, आप * और?
DirectoryInfo dirinfo = new DirectoryInfo(strMainPath);
String[] exts = new string[] { "*.jpeg", "*.jpg", "*.gif", "*.tiff", "*.bmp","*.png", "*.JPEG", "*.JPG", "*.GIF", "*.TIFF", "*.BMP","*.PNG" };
ArrayList files = new ArrayList();
foreach (string ext in exts)
files.AddRange(dirinfo.GetFiles(ext).OrderBy(x => x.CreationTime).ToArray());