2012-08-08 21 views
36

मैं एक ऐसा प्रोग्राम तैयार करना चाहता हूं जो मेरे डेस्कटॉप पर एक निश्चित प्रकार की सभी फाइलें पाता है और उन्हें विशिष्ट फ़ोल्डर्स में रखता है, उदाहरण के लिए, मेरे पास टेक्स्ट फ़ोल्डर में .txt वाली सभी फ़ाइलें होंगी।फ़ोल्डर में सभी फ़ाइलों को खोजें

कोई विचार यह है कि इसे पूरा करने का सबसे अच्छा तरीका क्या होगा? धन्यवाद।

मैं इस की कोशिश की है:

string startPath = @"%userprofile%/Desktop"; 
string[] oDirectories = Directory.GetDirectories(startPath, ""); 
Console.WriteLine(oDirectories.Length.ToString()); 
foreach (string oCurrent in oDirectories) 
    Console.WriteLine(oCurrent); 
Console.ReadLine(); 

यह फ़ाइलों के सभी खोजने में सफल नहीं था।

+0

चेक विवरण अपडेट किया गया। –

+0

आपने क्या प्रयास किया है? मेरा सुझाव है कि आप [DirectoryInfo] से शुरू करें (http://msdn.microsoft.com/en-us/library/system.io.directoryinfo) और [FileInfo] (http://msdn.microsoft.com/en-us /library/system.io.fileinfo) कक्षाएं। –

उत्तर

78

इनमें से बहुत से जवाब वास्तव में काम नहीं करेंगे, उन्होंने स्वयं को आजमाया है।

string filepath = Environment.GetFolderPath(Environment.SpecialFolder.Desktop); 
DirectoryInfo d = new DirectoryInfo(filepath); 

foreach (var file in d.GetFiles("*.txt")) 
{ 
     Directory.Move(file.FullName, filepath + "\\TextFiles\\" + file.Name); 
} 

यह फ़ोल्डर TextFiles के लिए डेस्कटॉप पर सभी .txt फ़ाइलें चले जाएँगे: यह एक जाने दे।

+3

बिल्कुल सही। धन्यवाद। –

5

आप Directory.GetFiles साथ कोशिश करते हैं और ठीक करने के लिए अपना प्रतिमान

string[] files = Directory.GetFiles(@"c:\", "*.txt"); 

foreach (string file in files) 
{ 
    File.Copy(file, "...."); 
} 

Or Move 

foreach (string file in files) 
{ 
    File.Move(file, "...."); 
}  

http://msdn.microsoft.com/en-us/library/wz42302f

+0

ठीक है यह एक लूप के रूप में काम करेगा? –

+0

मैंने स्क्रिप्ट –

8

सबसे पहले कर सकते हैं; सबसे अच्छा अभ्यास

string path = Environment.GetFolderPath(Environment.SpecialFolder.Desktop); 

के साथ उपयोगकर्ताओं को डेस्कटॉप फ़ोल्डर पाने के लिए तो फिर तुम जैसे

string[] files = Directory.GetFiles(path, "*.txt", SearchOption.AllDirectories); 

नोट कुछ के साथ सभी फ़ाइलों को मिल सकता है कि इसके बाद के संस्करण लाइन के साथ आप एक .txt साथ सभी फाइलों को मिलेगा होगा लॉग इन उपयोगकर्ता और सभी सबफ़ोल्डर के डेस्कटॉप फ़ोल्डर में एक्सटेंशन।

तो आप कॉपी या की तरह

// For copying... 
foreach (string s in files) 
{ 
    File.Copy(s, "C:\newFolder\newFilename.txt"); 
} 

// ... Or for moving 
foreach (string s in files) 
{ 
    File.Move(s, "C:\newFolder\newFilename.txt"); 
} 

ऊपर संग्रह गणना करके फ़ाइलों को स्थानांतरित कृपया ध्यान दें कि आप अपने Copy() (या Move()) आपरेशन में फ़ाइल नाम शामिल करने के लिए होगा सकता है। तो आपको कम से कम उस एक्सटेंशन के फ़ाइल नाम को निर्धारित करने का तरीका ढूंढना होगा, जिस पर आप काम कर रहे हैं और उपरोक्त उदाहरण में क्या होगा, जैसी सभी फाइलों का नाम नहीं।

इस बात को ध्यान में रखते हुए आप DirectoryInfo और FileInfo कक्षाओं को भी देख सकते हैं। similair तरीकों से कार्य करते हैं, लेकिन आप अपने पथ/फ़ाइल नाम, एक्सटेंशन, आदि और अधिक आसानी से

चेक बाहर इन अधिक जानकारी के लिए के बारे में जानकारी प्राप्त कर सकते हैं:

http://msdn.microsoft.com/en-us/library/system.io.directory.aspx

http://msdn.microsoft.com/en-us/library/ms143316.aspx

http://msdn.microsoft.com/en-us/library/system.io.file.aspx

+0

पर लूप जोड़ा है 'फ़ाइल। कॉपी' एक फ़ाइल को किसी अन्य में कॉपी नहीं करता है? क्या आपका मतलब है 'फाइल.मोव'? – dtsg

+0

मुझे लगा कि वह विचार प्राप्त करेगा;) लेकिन पूर्णता के लिए मैंने दोनों विकल्पों को जोड़ा है। –

+0

कोई समस्या नहीं;) यह अभी भी फ़ोरैच लूप में विफल हो जाएगा, हालांकि, आप प्रत्येक फ़ाइल को एक ही फ़ाइल नाम 'newFilename.txt' – dtsg

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