2013-02-16 9 views
9

मुझे कुछ अजीब समस्या है जब मैं अपने WPF ऐप में निम्न पंक्ति जोड़ रहा हूं।निर्देशिका। गेटफाइल() "।" के पैटर्न के साथ काम नहीं कर रहा है।

private void button1_Click(object sender, RoutedEventArgs e) 
{ 

    foreach(string files in Directory.GetFiles(path,".",SearchOption.TopDirectoryOnly)) 
     tb_FileBrowse.Text = files; 

} 

बात यह है कि ढांचे में 3.5 उपरोक्त विधि कुछ भी नहीं है, यहां तक ​​नहीं एक त्रुटि करता है, लेकिन अगर मैं इसे ढांचे को बदलने के 4.5 यह काम करता है !. इसके अलावा, अगर मैं फ्रेमवर्क 3.5 उपयोग कर रहा हूँ और ConsolApp में इस

foreach (string files in Directory.GetFiles(path, ".", SearchOption.TopDirectoryOnly)) 
{ 
    Console.WriteLine("{0}",files); 
} 

कोड की तरह इसे बदलने के कुछ परिणाम देती है।

क्या किसी को भी एक ही समस्या है?

+0

मुझे लगता है कि सही खोज पैटर्न "\ *। \ *" होना चाहिए। Mayby आपके कोड में "\ *। \ *" है लेकिन इस साइट ने \ * को कुछ भी नहीं बदला है। (जब मैंने यह टिप्पणी लिखी थी तो मुझे यह समस्या थी।) उस मामले में मुझे नहीं पता कि समस्या क्या है। \ * * – Casperah

+0

लिखने के लिए आपको अपना शीर्षक संपादित करना होगा। कृपया देखें, "[प्रश्नों में उनके शीर्षक में" टैग "शामिल होना चाहिए?] (Http://meta.stackexchange.com/questions/19190/)", जहां आम सहमति है "नहीं, उन्हें नहीं करना चाहिए"। –

उत्तर

11

मैंने कोशिश की और मुझे एक ही परिणाम मिला। Resharper के साथ एपीआई स्रोत कोड में ड्रिलिंग से पता चलता है कि निर्देशिका.GetFiles के .NET 3.5 और 4.5 संस्करण पूरी तरह से अलग हैं।

विशेष रूप से .NET 4.5 संस्करण इस समारोह में शामिल है (और .NET 3.5 नहीं करता है): '।'

private static string NormalizeSearchPattern(string searchPattern) 
{ 
    string searchPattern1 = searchPattern.TrimEnd(Path.TrimEndChars); 
    if (searchPattern1.Equals(".")) 
    searchPattern1 = "*"; 
    Path.CheckSearchPattern(searchPattern1); 
    return searchPattern1; 
} 

कौन से कारण है कि एक खोज पैटर्न बताते हैं .NET 4.5 पर काम करता है लेकिन 3.5 पर नहीं।

आपको संगतता के लिए '*' या '*। *' का उपयोग करना चाहिए।

+1

जिज्ञासा और पूर्णता से बाहर: 4.0 के बारे में क्या? – JustAnotherUserYouMayKnow

+2

'।' 4.0 पर भी काम करता है। – Phil

+4

+1। मैं "।" का उपयोग करने से बचूंगा विंडोज़ में "।" आमतौर पर "वर्तमान डायरेक्टोरी" (".." माता-पिता है) इसलिए मुझे व्यक्तिगत रूप से कोई कारण नहीं दिखता कि "केवल वर्तमान निर्देशिका" पैटर्न का अर्थ है "दिए गए फ़ोल्डर में सभी फाइलें"। मैं शर्त लगाता हूं कि ज्यादातर लोग 'गेटफाइल' कॉल के साथ पूरी तरह से परेशान होंगे। " पैटर्न के रूप में। –